使用 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 版本无关紧要。您的错误消息表明您只是混淆了w
和 a
对象。你确定你的名字都对吗?
@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学习中,当使用writerow时输出多余的空行解决方法