我试图让csv模块解析包含带引号的字符串和带引号的分隔符的行。遗憾的是,我无法使用任何方言/格式参数获得所需的结果。有没有办法解析这个:
'"AAA", BBB, "CCC, CCC"'
得到这个:
['"AAA"', 'BBB', '"CCC, CCC"'] # 3 elements, one quoted separator
两个基本要求:
有可能吗?
答案 0 :(得分:3)
有两个问题需要克服:
skipinitialspace=True
完成工作第二部分在文档中描述为:
Dialect.doublequote
控制在字段中出现的quotechar实例应该如何引用。 当为True时,角色加倍。如果为False,则escapechar将用作quotechar的前缀。 默认为True。
独立示例,没有文件:
import csv
data = ['"AAA", BBB, "CCC, CCC"'.replace('"','"""')]
cr = csv.reader(data,skipinitialspace=True)
row = next(cr)
print(row)
结果:
['"AAA"', 'BBB', '"CCC, CCC"']
以文件作为输入:
import csv
with open("input.csv") as f:
cr = csv.reader((l.replace('"','"""' for l in f),skipinitialspace=True)
for row in cr:
print(row)
答案 1 :(得分:0)
你试过这个吗?
import csv
with open('file.csv') as csvfile:
reader = csv.reader(csvfile, delimiter=',', quotechar='"')
for row in reader:
print row