我试图按照许多python的CSV嗅探器工具答案中的建议使用StackOverflow来猜测给定的CSV文件是否由;或,分隔。
它可以很好地处理基本文件,但是当一个值包含分隔符时,它被双引号包围(按照标准做法),嗅探器抛出_csv.Error: Could not determine delimiter。
以前有人经历过吗?
下面是一个最小的失败CSV文件:
column1,column2
0,"a, b"以及概念的证明:
Python 3.5.1 (default, Dec 7 2015, 12:58:09)
[GCC 5.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import csv
>>> f = open("example.csv", "r")
>>> f.seek(0);
0
>>> csv.Sniffer().sniff(f.read(), delimiters=';,')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.5/csv.py", line 186, in sniff
raise Error("Could not determine delimiter")
_csv.Error: Could not determine delimiter我完全控制输入CSV文件的生成;但有时它是由第三方使用MS Office修改的,分隔符被分号替换,所以我不得不使用这种猜测方法。我知道我可以停止在输入文件中使用逗号,但是我想知道我是否首先做错了什么。
发布于 2016-03-02 20:33:43
你给嗅探器输入太多了。如果您运行以下示例文件,您的示例文件就会工作:
csv.Sniffer().sniff(f.readline())它仅使用标题行来确定分隔符字符。如果您想了解为什么嗅探器启发式方法在获取更多数据时失败了,那么读取csv.py库源代码是无可替代的。
https://stackoverflow.com/questions/35756682
复制相似问题