python3 - csv import - 更改for循环中的字符串

时间:2014-05-22 18:39:41

标签: python csv python-3.4

我只想删除一些""来自csv import。

示例行

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




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

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

2 个答案:

答案 0 :(得分:2)

我会使用列表理解

做一些事情
def dq_strip(string):
    return string.replace('""','')

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

如果@MikeRixWolfe对你的意图是正确的,你可以用一个替换两个双引号。

答案 1 :(得分: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"'

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