我正在使用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"']
答案 0 :(得分:3)
正如@wim在评论中指出的,这是由逗号后的空格字符引起的。
如果您将读取器配置为跳过定界符后的空格,那么它将起作用:
>>> print(list(csv.reader(io.StringIO('ab, ",cd"'), skipinitialspace=True)))
[['ab', ',cd']]
顺便说一句,有关其他CSV阅读器选项,请参见the documentation。
答案 1 :(得分:1)
它没有坏,是预期的行为。
发生的事情是,csv模块仅在在分隔符之后时才将引号视为引号。
如果在此之前有其他内容(空格或其他内容),则引用被视为数据的一部分。
zvone answer说明了解决方法(仅在空格的情况下)