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

Python中将元组写入CSV文件时元素被拆分的原因及解决方法

问题原因与解决方法

这问题我之前也踩过坑!其实是csv.writerows()的工作逻辑导致的——它接收的参数应该是多行数据的集合,其中每一行都得是一个可迭代对象(比如列表、元组),用来表示这一行的多列内容。

你传入的test元组里,每个元素是字符串,而字符串本身就是可迭代的(会被自动拆成单个字符)。所以writerows()会把每个字符串当成「一行有多列」来处理,自然就把每个字符用逗号分隔开了。

解决办法

有两种简单的方式可以修复这个问题:

方法1:把每个元素包装成单元素序列

修改传入writerows()的数据,把每个字符串放在一个单元素的元组或列表里,这样csv.writer就会把整个字符串当成一行的唯一一列,不会拆分字符。

修改后的代码如下:

import csv
import platform
if platform.system() == 'Windows':
    newline=''
else:
    newline=None
test = ("apple", "banana", "cherry")
def write_list_to_file(output_file, lst):
    with open(output_file, 'w', newline=newline) as f:
        writer = csv.writer(f)
        # 将每个元素包装成单元素元组,避免被拆分
        writer.writerows( [(item,) for item in lst] )
    print("File created")
write_list_to_file("test.csv", test)

方法2:循环调用writerow()

如果觉得列表推导式有点绕,也可以直接循环遍历你的元组,每次调用writerow()写入单个元素(同样要把元素放在单元素序列里):

import csv
import platform
if platform.system() == 'Windows':
    newline=''
else:
    newline=None
test = ("apple", "banana", "cherry")
def write_list_to_file(output_file, lst):
    with open(output_file, 'w', newline=newline) as f:
        writer = csv.writer(f)
        for item in lst:
            # 每次写入一行,用单元素列表包裹元素
            writer.writerow( [item] )
    print("File created")
write_list_to_file("test.csv", test)

两种方法最终都会输出你想要的结果:

apple
banana
cherry

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 07:27:37