UnicodeEncodeError for csv paring on apache beam in python

2024-09-25 04:30:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用apachebeampython解析CSV文件。但是,当CSV文件中有一些unicode字符时,比如“ş”,它无法解析错误

RuntimeError: UnicodeEncodeError: 'ascii' codec can't encode character u'\u015f' in position 32: ordinal not in range(128) [while running 'Parse CSV']

当用beam.io.ReadFromText打开文件时,我尝试使用unicodecsv包并分配编码器,但没有帮助。但是,如果我在CSV中将字符“ş”转义为\u015,它就可以工作了。在apachebeam(python)中读取UTF-8编码文件有什么修复方法或正确的方法吗?在

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()

Tags: 文件csv方法inioimportpipelineparse