如何将csv.Sniffer用于2种不同的CSV类型?

问题描述:

我想读2种不同类型的CSV档案:如何将csv.Sniffer用于2种不同的CSV类型?

  • 一个有','作为分隔符
  • 一个有​​3210作为分隔符

我想检查我该定界符使用干:

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 = ";") 

有人可以帮我吗?

Sniffer预计sample string,而不是文件。所有你应该需要做的是:

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

跳轨是很重要的,因为你正在使用readline命令文件中的当前位置,你需要重置回文件的开头。否则你会丢失数据。