【发布时间】:2016-12-10 18:21:10
【问题描述】:
在 Python 2 中,这段代码符合我的预期:
import csv
import sys
writer = csv.writer(sys.stdout)
writer.writerow([u'hello', b'world'])
打印出来:
hello,world
但在 Python 3 中,bytes 打印时带有前缀和引号:
hello,b'world'
由于 CSV 是一种通用数据交换格式,并且除了 Python 之外没有其他系统知道 b'' 是什么,我需要禁用此行为。但我还没弄清楚怎么做。
当然,我可以首先在所有bytes 上使用str.decode,但这既不方便又低效。我真正想要的是将文字字节写入文件,或者将编码(例如'ascii')传递给csv.writer(),以便它知道如何解码它看到的任何bytes 对象。
【问题讨论】:
标签: python python-3.x csv python-unicode