如何在Python中消除csv中奇怪插入的引号

时间:2017-09-05 16:53:03

标签: python csv

我有一个列表,在Python中引用不一致,我试图消除它们。如果csv文件中每行只有一组双引号,则下面的内容工作正常,但如果有多个集合(例如第四行(标题后面的第三行数据)

我尝试了许多不同的方法,但我似乎总是错误地将这些元素组合在一起。

示例csv:

First,Nickname,Last,Sport
Bill,Bats,Smith,Baseball
Tom,Kicks,Johnson,Soccer
"John,"Footy",Jacobsen,Football"
Mike,"Mikey",Jones,Basketball

我的代码:

import csv
with open('fake.csv', mode='r', encoding = 'utf-8') as infile:
    reader = csv.reader(infile)
    for line in reader:
     if len(line) <4:
        for i in range(0,len(line)):
         line[i].strip('"')
         line[i].replace('"', '')
     print(line)
     print(line[0] + line[2])

期望的输出:

['First', 'Nickname', 'Last', 'Sport']
FirstLast
['Bill', 'Bats', 'Smith', 'Baseball']
BillSmith
['Tom', 'Kicks', 'Johnson', 'Soccer']
TomJohnson
['John','Footy', 'Jacobsen', 'Football']
JohnJacobsen
['Mike', 'Mikey', 'Jones', 'Basketball']
MikeJones

我的输出:

['First', 'Nickname', 'Last', 'Sport']
FirstLast
['Bill', 'Bats', 'Smith', 'Baseball']
BillSmith
['Tom', 'Kicks', 'Johnson', 'Soccer']
TomJohnson
['John,Footy"', 'Jacobsen', 'Football"']
John,Footy"Football"
['Mike', 'Mikey', 'Jones', 'Basketball']
MikeJones

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:2)

读者会期望引号字符包含包含分隔符的条目,因此它按预期工作。如果您的输入包含不平衡或不准确的引用,如本例所示,一个选项是告诉读者不要特别处理引号:

cancel(true)

然后你必须自己处理报价,所以如果你的输入一直被引用,这不是最好的选择。