web-dev-qa-db-ja.com

Pythonを使用してCSVに書き込むと、空白行が追加されます

CSVファイルに書き込もうとしていますが、間に空白行があります。空白行を削除するにはどうすればよいですか?

import csv
b = open('test.csv', 'w')
a = csv.writer(b)
data = [['Me', 'You'],\
        ['293', '219'],\
        ['54', '13']]
a.writerows(data)
b.close()
76
user2031063

csvモジュールの使用方法は、いくつかの点でPython 3で変更されました (docs) 、少なくともファイルを開く方法に関して。とにかく、

import csv
with open('test.csv', 'w', newline='') as fp:
    a = csv.writer(fp, delimiter=',')
    data = [['Me', 'You'],
            ['293', '219'],
            ['54', '13']]
    a.writerows(data)

動作するはずです。

116
DSM

WindowsでPython 2.xを使用している場合は、行open('test.csv', 'w')open('test.csv', 'wb')に変更する必要があります。つまり、ファイルを バイナリファイル として開く必要があります。

ただし、他の人が述べたように、ファイルインターフェイスはPython 3.xで変更されました。

21
Wilduck
import csv

hello = [['Me','You'],['293', '219'],['13','15']]
length = len(hello[0])

with open('test1.csv', 'wb') as testfile:
    csv_writer = csv.writer(testfile)
    for y in range(length):
        csv_writer.writerow([x[y] for x in hello])

このような出力を生成します

Me You
293 219
13 15

お役に立てれば

15
John Smith

Python 2の空白行を処理するには、ファイルをバイナリbモードで開く必要があります。これは、Python 3では必要ありません。

したがって、open('test.csv', 'w')open('test.csv', 'wb')に変更します。

5
Aditya

Pyexcel は、Python2とPython3の両方で問題なく動作します。

pipを使用した高速インストール:

pip install pyexcel

その後、わずか3行のコードとジョブが実行されます。

import pyexcel
data = [['Me', 'You'], ['293', '219'], ['54', '13']]
pyexcel.save_as(array = data, dest_file_name = 'csv_file_name.csv')
3
Danny Lessio