76

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

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

5 回答 5

117

在 Python 3 中,您使用csv模块的方式在几个方面(文档)发生了变化,至少在您需要如何打开文件方面。无论如何,像

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)

应该管用。

于 2013-02-04T19:15:43.720 回答
21

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

但是,正如其他人所说,文件接口在 Python 3.x 中发生了变化。

于 2013-02-04T19:05:36.027 回答
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])

会产生这样的输出

Me You
293 219
13 15

希望这可以帮助

于 2013-02-04T19:10:26.983 回答
5

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

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

于 2013-02-04T19:06:57.773 回答
3

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')
于 2016-03-23T12:59:18.560 回答