Dynadot 搬瓦工 腾讯云

Python csv.writer 解决写入 CSV 时中间多一个空行的问题

Sider GigsGigsCloud

今天在修改一段代码的时候遇到一个奇怪的问题,用 csv 这个库写入数据的时候居然每次写入都会多一行空行。因为之前也这么用一直都没问题,于是搜了一下解决方法,在此记录。

一、问题和解决方法

一般来说 Python 写入 csv 的代码如下:

with open(birth_weight_file,'w') as f:
    writer=csv.writer(f)
    writer.writerow(birth_header)
    writer.writerows(birth_data)
    f.close()

这种写法最终的结果就是生成的 csv 文件每两行中间都有一行空白行,解决办法就是写入后面加上 newline='' 即可。

修改后代码如下:

with open(birth_weight_file,'w',newline='') as f:
    writer=csv.writer(f)
    writer.writerow(birth_header)
    writer.writerows(birth_data)
    f.close()

二、原因分析

Python 3 里面对 str 和 bytes 类型做了严格的区分,不像 Python 2 里面某些函数里可以混用。所以用 Python 3 来写 wirterow 时,打开文件不要用 wb 模式,只需要使用 w 模式,然后带上 newline=''

在 Windows 这种使用 \r\n 的系统里,不用 newline='' 的话,会自动在行尾多添加个 \r,导致多出一个空行,即行尾为 \r\r\n

参考文献:

  • https://blog.csdn.net/pfm685757/article/details/47806469
  • https://www.cnblogs.com/littlebob/p/9293931.html
Dynadot Hostwinds
赞(3)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《Python csv.writer 解决写入 CSV 时中间多一个空行的问题
文章链接:https://oldtang.com/9192.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。