4

csv ファイルからデータを読み込もうとしています。quotechar を csv.QUOTE_NONE に設定しました。

この目的のために私が書いた Python の 4 行は、次のとおりです。

import csv
with open('mtz.gps.comfort_gps_logs_20110214_20110215.csv', 'rb') as csvfile:
    taxiDataReader = csv.reader(csvfile, delimiter = ',', quotechar = csv.QUOTE_NONE)
    for row in taxiDataReader:
        print row

ただし、これらを実行すると、次のエラー メッセージが表示されます -

Traceback (most recent call last):
  File "log.py", line 3, in <module>
    taxiDataReader = csv.reader(csvfile, delimiter = ',', quotechar = csv.QUOTE_NONE)
TypeError: "quotechar" must be an 1-character string

この特定のエラーが表示される理由を理解するだけでなく、quotechar の実際の役割をより詳細に理解したいと思います。

4

1 に答える 1

16

QUOTE_NONEquotingではなく、パラメータの値として意図されていますquotechar

正しい方法は、使用することです

taxiDataReader = csv.reader(csvfile, delimiter=',', quoting=csv.QUOTE_NONE)

ドキュメントquotecharは、常に 1 文字の文字列でなければならないと記載されています。その役割は、引用に使用する文字を選択することだけです。

引用はさまざまな状況で必要になります。

  • CSV フィールドに区切り文字 (コンマなど) が含まれている場合
  • CSV フィールドに改行文字が含まれている場合。

どちらの場合も、CSV リーダーは、これらの文字が制御文字ではなくリテラル文字であることを認識する必要があります。したがって、値[1, "hello", "1,2,3", "hi\nthere"]を CSV ファイルに入れたい場合、結果が

1,hello,1,2,3,hi
there

そうじゃない?したがって、これらのフィールドは引用符で囲まれています。

1,hello,"1,2,3","hi\nthere"

quotingいつ何を引用するかを制御します (デフォルトはQUOTE_MINIMAL、つまり、引用が絶対に必要な場合のみ)。引用符を完全にオフにすると ( QUOTE_NONE)、 の値quotecharはもちろん無意味になります。

于 2013-05-30T10:05:57.573 に答える