逗号分隔的csv模块作为分隔符

时间:2019-09-25 20:24:36

标签: python csv

我正在使用python的csv模块,并使用引号包含包含分隔符的字段。

文件a.txt如下所示:

ab, ",cd"

我得到以下指示,表明它没有用双引号引起来。

In [27]: with open('a.txt', newline='') as csvfile:
    ...:     reader = csv.reader(csvfile, delimiter=',')
    ...:     for row in reader:
    ...:         if row:
    ...:             print(row)
    ...:
['ab', ' "', 'cd"']

2 个答案:

答案 0 :(得分:3)

正如@wim在评论中指出的,这是由逗号后的空格字符引起的。

如果您将读取器配置为跳过定界符后的空格,那么它将起作用:

>>> print(list(csv.reader(io.StringIO('ab, ",cd"'), skipinitialspace=True)))
[['ab', ',cd']]

顺便说一句,有关其他CSV阅读器选项,请参见the documentation

答案 1 :(得分:1)

它没有坏,是预期的行为。

发生的事情是,csv模块仅在在分隔符之后时才将引号视为引号。

如果在此之前有其他内容(空格或其他内容),则引用被视为数据的一部分。

zvone answer说明了解决方法(仅在空格的情况下)