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

Python Web Scraping导出CSV格式异常及列错位问题求助

问题分析与解决方法

嘿,我来帮你搞定这个CSV导出的问题!你遇到的字母分散、列错位这些异常,其实都是代码里的两个小细节没处理好导致的,咱们一步步理清楚:

1. 核心问题拆解

(1)分隔符设置不符合CSV标准

你把delimiter=' '设成了空格,但CSV的默认标准分隔符是逗号(,)。用空格当分隔符会让每个单元格的内容被强制拆分,再结合下面的问题,就出现了字母之间全是空格的怪异格式。

(2)writerows的参数格式不对

csv.writer.writerows()要求传入嵌套可迭代对象(比如列表的列表:[["标题1"], ["标题2"]])。如果你的h_list是单纯的字符串列表(比如["标题1", "标题2"]),writerows会把每个字符串拆成单个字符,每个字符当成独立单元格——这就是为什么标题会被拆成字母分散在一行,甚至跑到多列里的原因。

2. 修正后的代码

把这两处问题调整后,导出的CSV就会正常了:

import csv

# 假设h_list是你的标题字符串列表
h_list = ["Here's Why There Was an Empty Seat Next to Prince William at the Royal Wedding", ...]

with open('headlines.csv', 'w', newline='', encoding='utf-8') as o_file:
    # 改用逗号作为CSV标准分隔符
    writer = csv.writer(o_file, delimiter=',', quoting=csv.QUOTE_MINIMAL, lineterminator='\n')
    # 把每个标题包装成单元素列表,适配writerows的参数要求
    writer.writerows([[title] for title in h_list])
    # 也可以用循环逐个写入,效果完全一致:
    # for title in h_list:
    #     writer.writerow([title])

补充小提示

  • 加上newline=''是Python官方推荐的写法,能避免Windows系统下导出的CSV出现多余空行。
  • 加上encoding='utf-8'可以防止标题里的特殊字符(比如你例子里的单引号)出现乱码。
  • 如果你的h_list本来就是嵌套结构(比如每个元素已经是列表),那只需要把delimiter改回逗号就可以了。

这样处理后,导出的CSV就会是每行一个标题,格式完全符合预期啦!

内容的提问来源于stack exchange,提问作者Pragyanshu Labh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:05:45