UnicodeEncodeError для обработки CSV на Apache Beam в Python - PullRequest
0 голосов
/ 07 января 2019

Я работаю над синтаксическим анализом файла 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...