を引用:のPython 3 csv.writer版画 "バイト" と、このコードは、私が期待するものないのPython 2では
import csv
import sys
writer = csv.writer(sys.stdout)
writer.writerow([u'hello', b'world'])
それは印刷されます。
hello,world
しかし、Pythonの3中に、 CSVは、一般的なデータ交換フォーマットであるため
hello,b'world'
、および他のないシステムになったのは:bytes
をプレフィックスと引用符で印刷されていますPythonが何をb''
であるか知っているよりも、私はこの動作を無効にする必要があります。しかし、私はどのように考え出していない。
もちろん、すべてbytes
にはstr.decode
を使用できますが、それは不便で非効率的です。私が本当に欲しいのは、リテラルバイトをファイルに書き込むか、エンコード(例えば、 'ascii')をcsv.writer()
に渡すことです。その結果、表示されるbytes
オブジェクトのデコード方法を知ることができます。
バイト文字列とユニコード文字列は、Python 2でも2種類あります。 Python 2では、デフォルトの 'ascii'コーデックを使用して暗黙的に変換できます。 –
@マーク:ありがとう...答えはそれに応じて更新されました。 – martineau