8

2種類のCSVファイルを読みたい:

  • ','区切り文字として の1つ
  • ';'区切り文字としての1つ

次のようにして、使用している区切り文字を確認しようとしました。

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 に答える