0

我只是想从 csv 导入中删除一些“”。

样本行

['"fai"', '""', '""', '"190194"',]
['"boo"', '""',]




table = read_csv(FN)
for row in table:
    print (row)
    for item in row:
        edit = item.replace('""','')
        item.replace(item,edit)

我尝试了很多组合,但这只是我设法运行的一种,但它什么也没做。

4

2 回答 2

2

使用正则表达式sub()是一种方法:

>>> import re
>>> data = [['"fai"', '""', '""', '"190194"',], ['"boo"', '""',]]
>>> unquoted_data = [[re.sub(r'^"|"$', '', s) for s in x] for x in data]
>>> unquoted_data
[['fai', '', '', '190194'], ['boo', '']]

您的原始代码片段仅查找两个双引号一起出现并用两个单引号替换它。虽然它适用于数据,'""'但它不适用于'"fai"'.

上面的正则表达式查找以双引号开头或结尾的任何字符串,并将其替换为空字符串。从而给你想要的。

于 2014-05-22T19:08:53.750 回答
2

我会使用列表理解做一些事情

def dq_strip(string):
    return string.replace('""','')

table = [map(dq_strip, row) for row in table]

如果@MikeRixWolfe 对您的意图正确,您可以将两个双引号替换为一个。

于 2014-05-22T18:58:03.360 回答