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

网页抓取名单转CSV:如何拆分姓名与投票对应列

解决CSV拆分姓名与投票数据的问题

我懂你的痛点——现在每条数据都是"Name, Vote"这样的整串,要拆成两列还得保证姓名和投票结果一一对应对吧?其实只需要在循环里对每个字符串做拆分处理就行,几步就能搞定!

核心思路

针对每个类似"Clark, Yes"的字符串,用, (逗号加空格)作为分隔符拆分,这样就能得到一个包含姓名和投票结果的列表,直接把这个列表传给writerow(),就能自动分到CSV的A、B两列了。

修改后的完整代码

import urllib.request
from bs4 import BeautifulSoup
import csv

poll_page = 'xurl.com'
page = urllib.request.urlopen(poll_page)
soup = BeautifulSoup(page, 'html.parser')
name_box = soup.find('div', attrs={'class': 'xyz'})
name_list = name_box.text.splitlines()  # 保留你原有的行拆分逻辑

with open('index.csv','w', newline='') as csv_file:
    thewriter = csv.writer(csv_file)
    thewriter.writerow(['Name','Vote'])  # 写入表头
    for item in name_list:
        # 把每条数据按", "分割成姓名和投票结果两个元素
        name, vote = item.split(', ')
        thewriter.writerow([name, vote])

为什么这样可行?

  • item.split(', ')会把"Clark, Yes"拆成['Clark', 'Yes'],刚好对应CSV的两列
  • 直接把这个列表传给writerow(),CSV写入器会自动把列表的每个元素放到单独的单元格里,完美保持对应关系

进阶优化(可选)

如果担心有些数据格式不规范(比如分隔符后没空格、或者姓名里带逗号),可以用csv.reader来安全解析单条字符串,避免报错:

import csv  # 已导入,这里仅作示例
for item in name_list:
    # 用csv.reader解析单条行数据,自动处理分隔符和空格
    row = next(csv.reader([item], delimiter=',', skipinitialspace=True))
    if len(row) == 2:  # 确保拆分后是有效两列数据
        thewriter.writerow(row)
    else:
        print(f"格式异常的数据:{item}")  # 打印异常数据方便排查

这样不管分隔符后面有没有空格,都能正确拆分,还能过滤掉格式不对的行,代码更稳健。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:04:59