如何将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命令文件中的当前位置,你需要重置回文件的开头。否则你会丢失数据。