8

我想读取 2 种不同类型的 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 = ";")

有人能帮助我吗?

4

1 回答 1

26

Sniffer 需要一个示例字符串,而不是文件。您需要做的就是:

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

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

于 2013-02-26T16:19:54.733 回答