9

次の Kaggle コードを Python3.4 に変換しています。

CSVファイル出力時の最終行で、

predictions_file = open("myfirstforest.csv", "wb")
open_file_object = csv.writer(predictions_file)
open_file_object.writerow(["PassengerId","Survived"])
open_file_object.writerows(zip(ids, output))
predictions_file.close()
print('Done.')

タイプエラーがあります

TypeError: 'str' does not support the buffer interface

行で発生しますopen_file_object.writerow(["PassengerId","Survived"])

これは、ファイルをバイナリ モードで開いて csv データを書き込むことが Python 3 では機能しないためだと思います。ただし、行を追加encoding='utf8'してもopen()機能しません。

Python3.4でこれを行う標準的な方法は何ですか?

4

1 に答える 1

13

CSV ファイルの作成は、Python 2 と Python 3 で異なります (csvモジュールのドキュメントを参照すると、次のようになります)。

それ以外の

predictions_file = open("myfirstforest.csv", "wb")

使用する必要があります

predictions_file = open("myfirstforest.csv", "w", newline="")

(また、エラーが発生した場合に備えて、ファイルのクローズを処理するコンテキスト マネージャーを使用する必要があります):

with open("myfirstforest.csv", "w", newline="") as predictions_file:
    # do stuff
# No need to close the file
于 2016-01-30T09:54:19.680 に答える