首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >让csv.Sniffer使用引用的值

让csv.Sniffer使用引用的值
EN

Stack Overflow用户
提问于 2016-03-02 19:45:32
回答 1查看 10.9K关注 0票数 18

我试图按照许多python的CSV嗅探器工具答案中的建议使用StackOverflow来猜测给定的CSV文件是否由;,分隔。

它可以很好地处理基本文件,但是当一个值包含分隔符时,它被双引号包围(按照标准做法),嗅探器抛出_csv.Error: Could not determine delimiter

以前有人经历过吗?

下面是一个最小的失败CSV文件:

代码语言:javascript
复制
column1,column2
0,"a, b"

以及概念的证明:

代码语言:javascript
复制
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修改的,分隔符被分号替换,所以我不得不使用这种猜测方法。我知道我可以停止在输入文件中使用逗号,但是我想知道我是否首先做错了什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-02 20:33:43

你给嗅探器输入太多了。如果您运行以下示例文件,您的示例文件就会工作:

代码语言:javascript
复制
csv.Sniffer().sniff(f.readline())

它仅使用标题行来确定分隔符字符。如果您想了解为什么嗅探器启发式方法在获取更多数据时失败了,那么读取csv.py库源代码是无可替代的。

票数 35
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35756682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档