在Python 2這個代碼就我所期望的:的Python 3 csv.writer打印 「字節」 前綴並引用
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()
,以便它知道如何解碼它看到的任何對象。
字節字符串和unicode字符串在Python 2中也是兩種不同的類型。 Python 2只允許使用默認的'ascii'編解碼器進行隱式轉換。 –
@Mark:謝謝......答案相應更新。 – martineau