如何为两种不同的csv类型使用csv.Sniffer?

2024-10-06 16:16:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我想读取两种不同类型的CSV文件:

  • 一个用','作为分隔符
  • 一个用';'作为分隔符

我试图通过执行以下操作来检查正在使用的分隔符:

dialect = csv.Sniffer().sniff(csvfile, [',', ';'])  
data = csv.reader(csvfile, dialect)

但是我得到了TypeError : expected string or buffer

如果我这样做,它会工作,但我不知道何时使用什么分隔符。

data = csv.reader(csvfile, delimiter = ",")  
data = csv.reader(csvfile, delimiter = ";")

有人能帮我吗?


Tags: 文件csvcsvfile类型datastringreaderexpected
1条回答
网友
1楼 · 发布于 2024-10-06 16:16:01

嗅探器需要一个sample string,而不是一个文件。你需要做的就是:

dialect = csv.Sniffer().sniff(csvfile.readline(), [',',';'])
csvfile.seek(0)  
data = csv.reader(csvfile, dialect)

搜索很重要,因为您正在使用readline命令移动文件中的当前位置,并且需要重置回文件的开头。否则会丢失数据。

相关问题 更多 >