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

Python使用csv.writer保存列表为CSV时出现多余空行问题求助

问题根因

你使用csv.writer写入文件时出现多余空行是文件打开模式的参数配置问题:

  • Windows平台下文件默认打开时newline参数会自动将写入的\n转换为\r\n
  • csv.writer的writerow()方法本身已经会在每行末尾添加符合规范的换行符\r\n
    两者叠加后每行末尾变成\r\r\n,打开文件时就会显示为多出来的空行。

解决方法

打开写入文件时,显式指定newline=''参数即可,该写法跨平台通用,在Windows、Linux、macOS下都不会生成多余空行。示例修改如下:

import csv

# 原有错误的打开方式
# with open('output.csv', 'w') as f:

# 修正后的打开方式
with open('output.csv', 'w', newline='') as f:
    write = csv.writer(f)
    chunk = []
    # 你的原有处理逻辑
    for x in 你的数据源:
        chunk.append(int(x))
        if len(chunk) == 30:
            write.writerow(chunk)
            chunk = []
    # 补充:循环结束后写入剩余不足30个的元素(如果需要保留)
    if chunk:
        write.writerow(chunk)

代码优化建议

  • 去掉单独的计数变量z,直接通过len(chunk)判断是否写满30个元素,减少变量维护成本,避免计数逻辑出错
  • 新增末尾剩余元素的写入逻辑,避免当前代码会丢弃最后不满30个的元素的问题
  • 如果不需要兼容csv特殊格式(如元素不含逗号、引号等特殊字符),也可以直接用字符串拼接写入,写法更简单:
with open('output.txt', 'w') as f:
    chunk = []
    for x in 你的数据源:
        chunk.append(str(int(x)))
        if len(chunk) == 30:
            f.write(','.join(chunk) + '\n')
            chunk = []
    if chunk:
        f.write(','.join(chunk) + '\n')

内容的提问来源于stack exchange,提问作者beep boop

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 23:06:00