When attempting to read a CSV file containing accented characters with Python (specifically Spanish or French), an issue arises due to Python's default ASCII support within its csvreader.
To address this, a modified code snippet is proposed to read the CSV file as follows:
<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] filename = 'output.csv' reader = unicode_csv_reader(open(filename)) for field1, field2, field3 in reader: ...</code>
This code assumes the input data is already in UTF-8 encoding. If the input data is in a different encoding, the following "transcoding" approach can be applied:
<code class="python">line.decode('whateverweirdcodec').encode('utf-8')</code>
By replacing 'whateverweirdcodec' with the appropriate encoding, the input data can be converted to UTF-8 before being read by the csvreader.
The above is the detailed content of How to Read a UTF8 CSV File with Accented Characters in Python?. For more information, please follow other related articles on the PHP Chinese website!