Python:如何将多组元组数据正确输出为符合要求的CSV文件
解决CSV输出格式异常的问题
问题根源
你的代码错误在于:
- 把元组转为字符串后传给
writerow(),但writerow()要求传入元素序列(比如列表),而非单个字符串。 - 自定义的dialect用空格作为分隔符,导致字符串被拆分成单个字符,最终出现多余的空格和括号。
方案1:使用csv模块正确实现
不需要自定义dialect,默认CSV格式就是逗号分隔,直接提取元组中的浮点值组成行即可:
import csv # 示例数据 data2020 = [(-10.6,), (-25.11,), (-18.27,), (13.64,), (3.62,), (6.71,), (3.24,), (2.94,), (2.72,), (2.19,), (8.56,), (2.44,)] data2021 = [(13.76,), (15.17,), (12.82,), (3.55,), (11.24,), (8.22,), (-1.97,), (-4.96,), (-6.48,), (-2.19,), (-3.6,), (-4.04,)] with open("out.csv", "w", newline="") as the_file: writer = csv.writer(the_file) # 默认逗号分隔,符合CSV标准 for month in range(12): # 从元组中取出唯一的浮点值,组成一行的两个元素 row = [data2020[month][0], data2021[month][0]] writer.writerow(row)
运行后输出的CSV每行就是你想要的格式:
-10.6,13.76 -25.11,15.17 -18.27,12.82 ...
方案2:用Pandas简化操作(更适合结构化数据)
如果数据量较大或需要后续处理,用Pandas可以更高效地完成导出:
import pandas as pd # 示例数据 data2020 = [(-10.6,), (-25.11,), (-18.27,), (13.64,), (3.62,), (6.71,), (3.24,), (2.94,), (2.72,), (2.19,), (8.56,), (2.44,)] data2021 = [(13.76,), (15.17,), (12.82,), (3.55,), (11.24,), (8.22,), (-1.97,), (-4.96,), (-6.48,), (-2.19,), (-3.6,), (-4.04,)] # 转换为DataFrame结构 df = pd.DataFrame({ "2020": [item[0] for item in data2020], "2021": [item[0] for item in data2021] }) # 导出为CSV,不包含索引列 df.to_csv("out_pandas.csv", index=False)
内容的提问来源于stack exchange,提问作者Carla
相关产品推荐
相关产品推荐

