python - Python 3 中的 writerow 总是在原始行之间写一个空行,Python2 工作得很好。为什么?

标签 python python-3.x python-2.7

我的代码有问题。在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/

相关文章:

python - 有没有更有效的方法来求大量矩阵的平均值?

Python OpenCV : Conversion from float to int for using cv2. 行()

python - 根据两列和各自的范围值创建计数矩阵 pandas

python - 使用 Dash (Python) 移动对象(条形图)

python - 在 python 端动态调整 kivy 标签(和按钮)的大小

python脚本卡在从标准输入读取

python - 列表到数据框,列中列表中的每个元素

python - 如果 while 循环中的语句不起作用

python - 使用 pdb 运行时多处理代码失败?

Python 2.7 回车倒计时