Я работаю над синтаксическим анализом файла CSV в apache beam python. Однако, когда в CSV-файле есть символы Unicode, такие как «ş», он не может выполнить синтаксический анализ с ошибкой
RuntimeError: UnicodeEncodeError: 'ascii' codec can't encode character u'\u015f' in position 32: ordinal not in range(128) [while running 'Parse CSV']
Я пытался использовать пакет unicodecsv
и назначать кодер при открытии файла с помощью beam.io.ReadFromText
, но это не помогает. Однако, если я уйду от символа 'ş' до \ u015F в CSV, это сработает. Есть ли какое-либо исправление или правильный способ чтения файла кодирования UTF-8 в Apache Beam (Python)?
import apache_beam as beam
import unicodecsv as csv
pipeline = beam.Pipeline('DirectRunner')
csvparser = (pipeline
| 'Read CSV' >> beam.io.ReadFromText('gs://blahfoo/test.csv', coder=coders.StrUtf8Coder())
| 'Parse CSV' >> beam.Map(lambda line: next(csv.reader([line], quotechar='"', encoding='utf-8')))
)
pipeline.run()