1. ホーム
  2. python

python 3.5 error TypeError: can't concat str to bytes, TypeError: write() argument must be str, not bytes.

2022-02-18 07:03:15
オリジナルのプログラムです。
out = open('train_data.txt', 'w')
for sentences in sentences:
    out.write(sentence.encode("utf-8")+"\n")
print("できた!")

エラーです。TypeError: strをbyteに連結できません。

に修正しました。

    out.write(sentence.encode("utf-8")+b"\n")


このエラーは、次の理由で消えます。 encode が返すデータは bytes 型で、str と合計できない、'˶'˶' の前に b をつける


新しいエラーです。TypeError: write() の引数は、byte ではなく str でなければなりません。

を読むように修正しました。

    out.write(str(sentence.encode("utf-8")+b"\n"))

理由 書き込み関数の引数はstr型である必要があり、strに変換する必要がある


<スパン フォローアップ

書かれた中国語の文章の形式が判明した。\xc2\xa0\n\xef\xbc\x88\xe8\x8b\xb1\xe5\x9b\xbd\xe5\x8f\x91\xe9\x9\x9f\xb3\xef\xbc\x

プロシージャを以下のように変更します。

out = open('train_data.txt', 'w',encoding='utf-8')
for sentence in sentences:
    out.write(sentence+"\n")
print("done!")

すべてのエラーが消えます

原因
Windowsでは、新しいファイルのデフォルトエンコーディングはgbkで、pythonインタプリタは我々のネットワークストリームtxtをgbkでパースしますが、txtはすでにユニコードでデコードされているのでパースされず、解決策は、ターゲットファイルのエンコーディングを



<スパン 参考

https://blog.csdn.net/dawei_01/article/details/79569466

https://stackoverflow.com/questions/40740150/python-3-cant-concat-bytes-to-str-for-a-list

https://www.imooc.com/qadetail/227268