You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python从链表写入CSV时默认出现空行的原因及疑问

Python写入CSV文件出现多余空行的原因及解决方法

问题现象

使用csv模块写入CSV时,生成的文件每行之间多出了空行,原始代码如下:

import csv

# field names 
fields = ['Name', 'Branch', 'Year', 'CGPA'] 

# data rows of csv file 
rows = [ ['Nikhil', 'COE', '2', '9.0'], 
     ['Sanchit', 'COE', '2', '9.1'], 
     ['Aditya', 'IT', '2', '9.3'], 
     ['Sagar', 'SE', '1', '9.5'], 
     ['Prateek', 'MCE', '3', '7.8'], 
     ['Sahil', 'EP', '2', '9.1']] 

with open('Test.csv', 'w') as f:
    # using csv.writer method from CSV package
    write = csv.writer(f)
    write.writerow(fields)
    write.writerows(rows)

生成的CSV内容:

Name,Branch,Year,CGPA

Nikhil,COE,2,9.0

Sanchit,COE,2,9.1

Aditya,IT,2,9.3

Sagar,SE,1,9.5

Prateek,MCE,3,7.8

Sahil,EP,2,9.1

原因解析

这是跨平台换行符处理冲突导致的:

  • Windows系统中文本文件的标准换行符是\r\n,Python的open()函数默认以文本模式('w')打开文件时,会自动把代码中的\n转换成系统对应的换行符。
  • 但csv.writer本身已经按照CSV规范,在每一行末尾写入了\r\n作为换行。
  • 两者叠加后,每行实际写入的是\r\n\r\n,打开文件时就会显示成空行。

这个现象并非是设计好的“作用”,而是文本模式自动换行和csv模块换行处理的冲突,属于跨平台兼容时的常见问题。

解决方法

打开文件时添加newline=''参数,禁用Python的自动换行转换,让csv模块自行处理换行逻辑:

import csv

fields = ['Name', 'Branch', 'Year', 'CGPA'] 
rows = [ ['Nikhil', 'COE', '2', '9.0'], 
     ['Sanchit', 'COE', '2', '9.1'], 
     ['Aditya', 'IT', '2', '9.3'], 
     ['Sagar', 'SE', '1', '9.5'], 
     ['Prateek', 'MCE', '3', '7.8'], 
     ['Sahil', 'EP', '2', '9.1']] 

# 添加newline=''参数
with open('Test.csv', 'w', newline='') as f:
    write = csv.writer(f)
    write.writerow(fields)
    write.writerows(rows)

修改后生成的CSV就不会有多余空行,符合预期格式。

内容的提问来源于stack exchange,提问作者Bending Rodriguez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 23:48:12