You need to enable JavaScript to run this app. Python使用csv.writer写入爬取的人口数据时数字被拆分多列、城市内容未写入问题
优惠活动
大模型
产品
解决方案
定价
更多

Python使用csv.writer写入爬取的人口数据时数字被拆分多列、城市内容未写入问题

问题根源定位
  • 人口数值被拆分为多个独立列:csv.writer.writerow() 要求传入的参数是行内容的序列(列表/元组),序列内每个元素对应CSV的一个单元格。你直接传入search.text字符串,字符串属于可逐字符遍历的可迭代对象,每个字符都会被识别为独立的单元格值,因此才会出现单个字符占一列的情况。
  • 城市相关内容未按预期写入:同样是直接传入字符串的问题,城市部分的文本也被拆成了上百个独立字符列。多数CSV查看工具(如Excel)默认仅展示有限列,你很可能没有注意到散落在前列的城市字符,因此误以为这部分内容完全没写入。
修复方案
  1. 先将固定格式的search.text拆分为结构化字段:按照换行符拆分后,第一部分就是城市信息,第二部分就是带千分位的人口数值。
  2. 将拆分后的字段放入列表传入writerow,同时遵循Python csv模块的官方规范,打开文件时添加newline=''参数,避免出现换行异常。
  3. 可选:提前写入表头,方便后续查看。

修复后代码:

import csv
# 按换行拆分爬取到的固定格式文本
content_lines = search.text.splitlines()
city_info = content_lines[0]  # 对应 "城市, 州 | Data USA" 部分
population = content_lines[1] # 对应带千分位的人口数值

with open('population.csv', 'w', newline='') as f:
    thewriter = csv.writer(f)
    # 写入表头
    thewriter.writerow(['城市信息', '人口数值'])
    # 列表每个元素对应一个单元格,不会被拆分
    thewriter.writerow([city_info, population])

如果不需要保留“| Data USA”后缀,可以对城市信息做二次处理:
city_info = content_lines[0].split(' | ')[0]
即可仅保留“New Smyrna Beach, FL”这类核心城市信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.04 07:36:04