アクセント付き文字を含む CSV ファイルを Python で読み取るのは、ASCII サポートが限られているため、困難になる場合があります。この記事では、この問題の解決策を検討し、そのようなファイルを読み取ろうとしたときに発生する「UnicodeDecodeError」に対処します。
アクセント付き文字を処理するには、次のような CSV リーダーが必要です。 Unicode エンコードをサポートします。次のコードは、標準の CSV リーダーを変更します。
<code class="python">def unicode_csv_reader(unicode_csv_data, dialect=csv.excel, **kwargs): # Decode UTF-8 data into Unicode strings csv_reader = csv.reader(unicode_csv_data, dialect=dialect, **kwargs) for row in csv_reader: yield [unicode(cell, 'utf-8') for cell in row]</code>
元のソリューションでは、エンコードを Unicode 文字列ではなくバイト文字列に誤って適用していました。以下のコードはこの間違いを修正します:
<code class="python">import csv def unicode_csv_reader(utf8_data, dialect=csv.excel, **kwargs): csv_reader = csv.reader(utf8_data, dialect=dialect, **kwargs) for row in csv_reader: yield [unicode(cell, 'utf-8') for cell in row]</code>
これで、次のように UTF8 でエンコードされた CSV ファイルを自信を持って読み取ることができます:
<code class="python">filename = 'output.csv' reader = unicode_csv_reader(open(filename)) # Iterate through the rows, fields for field1, field2, field3 in reader: print field1, field2, field3 </code>
提供されるソリューションでは、入力データがすでに UTF8 エンコーディングであることを前提としていることに注意してください。そうでない場合は、CSV リーダーに渡す前に、decode メソッドを使用して UTF8 に変換できます。
以上がPython でアクセント文字を含む UTF8 CSV ファイルを読み取る方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。