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

Python中字符串列表存入CSV文件时字符被拆分的问题求助

解决Python列表存入CSV时字符被拆分的问题

嘿,这个坑我之前也踩过!太懂这种明明代码看起来没问题,但CSV里的内容全拆成单个字符的崩溃感了😆

问题根源

你遇到的情况,核心原因是csv模块的writerow()方法会把传入的可迭代对象的每个元素拆成单独的CSV列。而字符串本身就是字符的可迭代对象,所以当你直接把单个动物名称(比如"dog")传给writerow()时,它会把'd'、'o'、'g'分别当成不同的单元格写入,就出现了你看到的d,o,g这种情况。

错误代码示例(你可能不小心写成这样了)

import csv

animals = ["dog", "cat", "lion"]
with open("animals.csv", "w", newline="") as f:
    writer = csv.writer(f)
    for animal in animals:
        writer.writerow(animal)  # 这里是问题所在:直接传字符串,被拆成单个字符

正确的写法

根据你的需求,有两种常用的正确方式:

方式1:每个动物单独占一行(每行一个单元格)

把单个动物名称放进一个列表里再传给writerow(),这样writerow()就会把整个列表当成一行,里面的单个元素作为一个单元格:

import csv

animals = ["dog", "cat", "lion"]
with open("animals.csv", "w", newline="") as f:
    writer = csv.writer(f)
    for animal in animals:
        writer.writerow([animal])  # 用列表包裹单个元素,避免拆分

方式2:所有动物在同一行(每个动物一个单元格)

如果想把整个列表的动物放在同一行的不同单元格里,直接把整个列表传给writerow()就行:

import csv

animals = ["dog", "cat", "lion"]
with open("animals.csv", "w", newline="") as f:
    writer = csv.writer(f)
    writer.writerow(animals)  # 直接传入整个列表,每个元素对应一个单元格

方式3:一次性写入所有行(更简洁)

用writerows()方法,传入一个包含多个子列表的列表,每个子列表对应一行:

import csv

animals = ["dog", "cat", "lion"]
with open("animals.csv", "w", newline="") as f:
    writer = csv.writer(f)
    writer.writerows([[animal] for animal in animals])  # 生成每行一个元素的列表集合

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:18:47