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

如何将列表集合数据垂直写入CSV文件并完成字符串转数值处理

问题原因

你现有代码中使用join()将整个列表拼接为单个字符串后仅调用了一次writerow(),相当于只写了1行数据,所有值都被塞进了对应列的同一个单元格,这是导出效果不符合预期的核心原因。

修正方案

要实现两列数据垂直逐行对应写入,同时完成逗号过滤和整数类型转换,可按如下调整代码:

import csv

fieldnames = ['Signals', 'Costs']

signals = ['-108', '-107', '-107', '-107', '-107', '-107', '-94', '-87', '-108']
costs = ['8325', '5175', '2698', '1754', '4767', '3652', '2417', '7527', '3698']

with open('Data_to_Csv.csv', 'w', newline='', encoding='utf-8') as csvfile:
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    writer.writeheader()
    # 按位置配对两个列表的元素逐行写入
    for sig_str, cost_str in zip(signals, costs):
        # 先过滤逗号再转换为整数
        sig_val = int(sig_str.replace(',', ''))
        cost_val = int(cost_str.replace(',', ''))
        writer.writerow({'Signals': sig_val, 'Costs': cost_val})
关键说明
  • 打开文件时新增newline=''是csv模块的标准写法,可避免Windows系统下导出的CSV出现多余空行
  • 用zip()函数按位置配对两个列表的元素,每次循环写入一对值,自然就能得到两列垂直排布的效果
  • 如果你的数据中存在带逗号的字符串,replace(',', '')会先将逗号过滤后再做整数转换,完全匹配你的需求
  • 若两个列表长度不一致,可根据实际需求补充截断或补默认值的逻辑,你提供的示例中两个列表长度相同,直接使用zip()即可正常运行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 06:24:04