使用Python写入CSV会添加空行

use*_*063 76 python csv python-3.3

我正在尝试写入CSV文件,但中间有空行.如何删除空白行?

import csv
b = open('test.csv', 'w')
a = csv.writer(b)
data = [['Me', 'You'],\
        ['293', '219'],\
        ['54', '13']]
a.writerows(data)
b.close()
Run Code Online (Sandbox Code Playgroud)

DSM*_*DSM 116

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)
Run Code Online (Sandbox Code Playgroud)

应该管用.

  • @SaadBinShahid:那你就没有使用Python 3. (2认同)

Wil*_*uck 21

如果您在Windows上使用Python 2.x,则需要将行更改open('test.csv', 'w')open('test.csv', 'wb').那就是你应该把文件打开为二进制文件.

但是,正如其他人所说,Python 3.x中的文件界面已经改变.

  • @Wilduck:由于2/3 str /字节的变化,它*确实与OP正在使用哪个版本的Python有关. (2认同)

Joh*_*ith 15

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])
Run Code Online (Sandbox Code Playgroud)

会产生这样的输出

Me You
293 219
13 15
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助


Adi*_*tya 5

您需要以二进制b模式打开文件以处理Python 2中的空白行。这在Python 3中不是必需的。

因此,更改open('test.csv', 'w')open('test.csv', 'wb')