Python3(Windows版)でのCSV出力空行(CR)問題対策
先日困って検索したところ、ズバリなページが見つかり大変助かりました。3年以上前の記事(Python3.3,Windows7)ですが私のPython3.6.3,Windows7でも発生しています。pythonでcsvファイルを整形したいが、一行間隔で空行を出力してしまいハマった話(http://helloworldryo.hatenablog.com/entry/2014/05/07/031628)にありますとおりWindows上でPython3のcsv出力機能を使うと不要な改行コード(CR)が入り空行が大量に入ってしまいます。Linux (CentOS7.4 1708)上のPython-3.6.3では発生していません。私が気づいたのは同じスクリプトのLinuxとWindowsの実行結果を比較してあまりに違ったためです。
以下、Python3.6.3での検証用に上記ページのサンプルを使わせていただきました。
Windowsで実行したsample1.csv(右上)には空行ができる。(Linuxではどちらのスクリプトもsample2.csvの内容になる)
sampel1.csvとsample2.csvの比較(行末がなぜかCRだけになっている)
このPythonの機能で出力したCSVファイルの改行コードはLinuxでもCR+LFとなるため完全一致します。元々LFだけだった名残でWindows向けにCRを追加して余分(CR+CR+LF)になっているのではないか?と推定します。対策済みコードをLinuxで走らせても問題は起きないようです。
追記)上記キャプチャ画像中のサクラエディタのフォントはGoogle Noto Fonts化しています。ところが、初稿でのDF画像は古いFixedSys(Microsoft Corp. 1993)のままでしたので差し替えました。