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

如何用Python写入CSV文件并添加列?解决字符拆分问题

问题分析与解决方案

问题根源

你遇到的字符串被拆分成单个字符的问题,是因为csv.writer.writerow()方法会把传入的可迭代对象的每个元素当成一列。字符串本身是字符的可迭代对象,直接传字符串的话,每个字符都会被拆成单独一列。另外你当前的代码是先批量写姓名、再写职位、最后写邮箱,会导致三列数据上下错开,无法对应同一人的信息。

修复步骤

要实现三列对应同一人信息,需要把三个列表中索引相同的元素打包成一行再写入CSV:

  • 打开文件时添加newline='',避免Windows系统下生成的CSV出现多余空行(csv模块官方推荐写法)
  • 先写入表头,明确每列含义
  • 使用zip()把三个列表的对应元素打包成元组,循环写入每一行

修改后的完整代码(仅替换写入部分,其余爬虫代码保留)

# ... 前面的爬虫代码保持不变 ...

with open('test.csv', 'w', newline='', encoding='utf-8') as csv_file:
    csv_writer = csv.writer(csv_file)
    # 写入表头
    csv_writer.writerow(["姓名", "职位", "邮箱"])
    # 打包三个列表的对应元素,逐行写入
    for name, position, email in zip(name_lst, position_lst, email_lst):
        csv_writer.writerow([name, position, email])

额外说明

  • 添加encoding='utf-8'是为了避免中文乱码,确保CSV能正确显示中文姓名或职位
  • zip()会按最短的列表长度打包,如果三个列表长度不一致,超出部分会被忽略。你的爬虫逻辑里每个信息都是对应添加的,所以三个列表长度应该一致,无需额外处理

内容的提问来源于stack exchange,提问作者Jean-Paul Azzopardi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 13:39:37