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

如何让Python生成的CSV文件中每个值单独存放于独立单元格

问题根源

你当前代码用tabulate的plain格式输出的内容是靠空格对齐分隔的,不符合CSV文件默认以逗号作为字段分隔符的规范,表格类软件打开时识别不到字段边界,自然会把整行所有内容放到同一个单元格里。

解决方案

方案1:用Python标准库csv模块生成(最推荐,兼容性最好)

不需要依赖第三方库,Python原生自带的csv模块会自动处理分隔符、特殊字符转义等问题,不会出现格式异常,Windows环境下写入时加上newline=''参数可以避免生成的文件多出空行。

import csv

nestedlist = [["Point 1",0,5,0],
             ["Point 2",0,0,0],
             ["Point 3",5,0,0],
             ["Point 4",5,5,0],]

with open('GCP.csv', 'w', newline='', encoding='utf-8') as f:
    csv_writer = csv.writer(f)
    # 写入表头
    csv_writer.writerow(['n','x','y','z'])
    # 批量写入所有数据行
    csv_writer.writerows(nestedlist)

如果需要生成兼容的txt文件,直接把文件名改为GCP.txt即可,CSV本身就是纯文本格式,两种格式完全兼容。

方案2:保留tabulate库的使用

如果习惯用tabulate的输出逻辑,不需要自己写写入逻辑,直接把tablefmt参数从plain改为csv即可,tabulate原生支持标准CSV格式输出:

from tabulate import tabulate
nestedlist = [["Point 1",0,5,0],
             ["Point 2",0,0,0],
             ["Point 3",5,0,0],
             ["Point 4",5,5,0],]

with open('GCP.csv', 'w', encoding='utf-8') as f:
    f.write(tabulate(nestedlist, headers=['n','x','y','z'], tablefmt="csv"))

补充说明:如果生成的文件用Excel打开还是出现同单元格问题,检查本地Excel的列表分隔符设置,部分非英文区域的Excel默认以分号作为字段分隔符,这种情况在csv.writer中加参数delimiter=';'即可适配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 13:33:24