Ant*_*lvy 8 python csv python-2.7 python-3.x
我正在尝试使用许多StackOverflow答案中建议的python的CSV嗅探器工具来猜测给定的CSV文件是否由;or 分隔,.
它与基本文件一起工作正常,但是当一个值包含一个分隔符时,它被双引号包围(标准为),并且嗅探器抛出_csv.Error: Could not determine delimiter.
以前有没有人经历过这个?
这是一个最小的失败的CSV文件:
column1,column2
0,"a, b"
Run Code Online (Sandbox Code Playgroud)
并且概念证明:
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
Run Code Online (Sandbox Code Playgroud)
我完全控制输入CSV文件的生成; 但有时它会被使用MS Office的第三方修改,并且分隔符被半毫米替换,所以我必须使用这种猜测方法.我知道我可以停止在输入文件中使用逗号,但我想先知道我是否做错了.
msw*_*msw 20
你给了嗅探器过多的输入.如果运行,示例文件仍然有效:
csv.Sniffer().sniff(f.readline())
Run Code Online (Sandbox Code Playgroud)
它仅使用标题行来确定分隔符.如果您想了解为什么Sniffer启发式失败以获取更多数据,则无法替代读取csv.py库源代码.
| 归档时间: |
|
| 查看次数: |
4143 次 |
| 最近记录: |