使用 Python 写入 CSV 会添加空行 [重复]

Posted

技术标签:

【中文标题】使用 Python 写入 CSV 会添加空行 [重复]【英文标题】:Writing to CSV with Python adds blank lines [duplicate] 【发布时间】:2013-01-19 13:26:42 【问题描述】:

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

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

【问题讨论】:

在定义data 的行的末尾不需要反斜杠。 Python 忽略封闭方括号内的换行符,即在 [] 之间 如果我错了,请纠正我,但那个反斜杠是延续字符,不是吗? 这是旧的,但我注意到没有人回应。如果您有逗号,则不需要连续字符。 另见:How do I read and write CSV files with Python? 【参考方案1】:

您使用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)

应该可以。

【讨论】:

ERROR: TypeError: 'newline' is an invalid keyword argument for this function ? @SaadBinShahid:那么你没有使用 Python 3。【参考方案2】:

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

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

【讨论】:

这是Windows在写文本而不是二进制时自动添加nl-characters造成的吗? 我试过我得到这个错误:w.writrows(data) 'str' 不支持缓冲区接口 我用的是python33....不知道有没有区别! @user2031063 python 版本无关紧要。您的错误消息表明您只是混淆了 wa 对象。你确定你的名字都对吗? @Wilduck:OP 使用的 Python 版本确实很重要,因为 2/3 str/bytes 发生了变化。【参考方案3】:
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

希望对你有帮助

【讨论】:

谢谢,但是 'wb' 给了我一个错误。 这与您遇到的错误相同吗? ***.com/questions/5471158/… 解决方案有帮助吗? 不,它没有...我收到此错误 直接复制我的内容,这对我有用【参考方案4】:

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

所以,将open('test.csv', 'w') 更改为open('test.csv', 'wb')

【讨论】:

我试过了,我得到了这个错误:w.writrows(data) 'str' 不支持缓冲区接口。我正在使用python33..不知道这是否有任何区别!【参考方案5】:

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')

【讨论】:

以上是关于使用 Python 写入 CSV 会添加空行 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Python在使用函数打开时添加空行

python csv写入数据,消除空行

python csv写入的字符串是啥格式

Python学习中,当使用writerow时输出多余的空行解决方法

通过 python 将 txt 转换为 CSV:为啥会出现额外的空行? [复制]

在第一个空行写入 CSV [重复]