Python CSV DictReader字段内部带逗号的问题



我正在尝试使用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

最新更新