1. ホーム
  2. パイソン

[解決済み】Pythonで作成したCSVファイルの行間に空白行がある。

2022-03-23 20:26:59

質問

import csv

with open('thefile.csv', 'rb') as f:
  data = list(csv.reader(f))
  import collections
  counter = collections.defaultdict(int)

  for row in data:
        counter[row[10]] += 1


with open('/pythonwork/thefile_subset11.csv', 'w') as outfile:
    writer = csv.writer(outfile)
    for row in data:
        if counter[row[10]] >= 504:
           writer.writerow(row)

このコードは、次のように読みます。 thefile.csv を変更し、その結果を thefile_subset1 .

しかし、出来上がったcsvをMicrosoft Excelで開くと、各レコードの後に余分な空白行があるのです!

余分な空白行を入れないようにする方法はありますか?

解決方法は?

Python 2 , 開く outfile モード付き 'wb' の代わりに 'w' . その csv.writer は次のように書きます。 \r\n を直接ファイルに書き込むことができます。 でファイルを開かないと バイナリ モードでは \r\r\n なぜなら、Windowsでは テキスト モードでは、各 \n\r\n .

Python 3 は、必要な構文が変更され csv モジュールは、テキストモードで動作するようになりました。 'w' が必要であり、また newline='' (空文字列) パラメータを使用すると、Windows の行変換を抑制できます (以下のドキュメントリンクを参照)。

# Python 2
with open('/pythonwork/thefile_subset11.csv', 'wb') as outfile:
    writer = csv.writer(outfile)

# Python 3
with open('/pythonwork/thefile_subset11.csv', 'w', newline='') as outfile:
    writer = csv.writer(outfile)

ドキュメントリンク