我的代码有问题。在Python2中,我使用withopen在csv中打印一些内容,效果很好。当我使用 Python 3 时,我必须删除 BinaryMode (wb),然后它总是在正确的行之间打印一个空行。为什么?
with open('C:\\Users\\KDD1SGM\\Desktop\\example\\exportPython3.csv', mode="wb") as out:
writer = csv.writer(out, delimiter=";")
writer.writerow(writeData)
for i in range(len(newfunctions)):
writer.writerow(newfunctions[i])
输出如下:
line1: 1,2,3
line2: 4,5,6
....
当我尝试使用 open (对于 Python3)删除二进制模式时,输出 csv 是:
line1: 1,2,3
line2: 4,5,6
line3: ...
为什么现在有一个空行?以及如何删除它?
最佳答案
在 Python 2 中,如果以 'wb'
模式打开 out
,则 csv.writer
写入 \r\n
直接进入文件。仅当您以二进制模式打开它时,它才会写入 \r\r\n
,因为在 Windows 上它会将每个 \n
转换为 \r\n
.
幸运的是,在 Python 3 中,语法发生了变化,因此使用附加参数 newline=''
打开 out
以避免任何麻烦。
示例:
with open('C:\\Users\\KDD1SGM\\Desktop\\example\\exportPython3.csv', mode="w", newline='') as out:
writer = csv.writer(out, delimiter=";")
writer.writerow(writeData)
for i in range(len(newfunctions)):
writer.writerow(newfunctions[i])
来源
关于python - Python 3 中的 writerow 总是在原始行之间写一个空行,Python2 工作得很好。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57090536/