我正在尝试使用DictReader解析带有头的CSV文件。碰巧有一些字段值里面有逗号。这些逗号不应该用作分隔符。只有引号外的逗号可以用作分隔符。请让我知道,我怎样才能做到这一点。
让我们假设CSV文件是这样的:
field1, field2
"sdsad,asdsa","asdasd"
我的示例CSV文件中的数据如下
field1, field2, field3
"2012,A,", "F","1"
"2013,B,", "M","2"
"2014,C,", "M","3"
"2015,D,", "M","4"
我使用了这个代码
with open('names.csv') as csvfile:
reader = csv.DictReader(csvfile, fieldnames=("field1", "field2", "field3"), restkey=None, restval=None, dialect='excel')
for row in reader:
print(row['field1'],row['field2'],row['field3'])
下面是我得到的输出:
('field1', ' field2', ' field3')
('2012,A,', ' "F"', '1')
('2013,B,', ' "M"', '2')
('2014,C,', ' "M"', '3')
('2015,D,', ' "M"', '4')
您还可以通过创建Dialect类的实例(按照文档的建议)来设置参数,例如Dialect.delimiter,然后您可以将其分配给Dialect 参数。
参考:https://docs.python.org/2/library/csv.html csv.reader