UnicodeEncodeError для обработки CSV на Apache Beam в Python

Я работаю над анализом файла 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()

0 ответов

Другие вопросы по тегам