我正在用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()
目前没有回答
相关问题 更多 >
编程相关推荐