csvファイルにいくつかのタプルを書き込もうとしています。
これは私が試したものです:
import csv
out_file = open('csv_write.csv', 'w')
writer = csv.writer(out_file)
writer.writerow((0, 1, 2))
writer.writerow((3, 4, 5))
out_file.close()
これは機能しましたが、期待どおりではありませんでした。スプレッドシートの空白行に注意してください。
テキストエディタでは、ファイルは次のようになります。
0,1,2
<空白行>
3,4,5
<空白行>
(合計4行)
これらの空白行なしでどのように書くことができますか?
csv
モジュールは、独自の行末処理を行い、特定の方法でオープンする出力ファイルが必要です。
out_file = open('csv_write.csv', 'wb') # Python 2.x
out_file = open('csv_write.csv', 'w', newline='') # Python 3.x
参照http://docs.python.org/2.7/library/csv.html?highlight=csv#csv.writer:
...違いが生じるプラットフォームでは、「b」フラグを付けて開く必要があります。
そしてhttp://docs.python.org/3.3/library/csv.html?highlight=csv#csv.writer:
... newline = ''で開く必要があります...
空白行は、csv
モジュールのデフォルトの「方言」がであるためですexcel
。その方言が定義しlineterminator='\r\n'
、それらの文字はストリームに直接書き込まれます。Python 2で出力ファイルをテキストモードで開くかnewline=''
、Python 3で「それが違いを生むプラットフォームで」(Windows)で開く\n
と、出力ストリーム内のすべてがに変換され\r\n
、結果として\r\r\n
。これにより、余分な空白行が発生します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加