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

如何在Python中将浮点数列写入CSV文件并每行一个值?

问题描述

需要将包含3个浮点数的列表:

least_scores=[14.285714285714286, 14.375, 16.5]

写入CSV文件,要求每个值单独占一行,期望输出内容:

14.285714285714286
14.375
16.5

但现有代码存在两种问题:

  • 使用writer.writerow(least_scores)时,所有数值被写入同一行;
  • 改用writer.writerows或循环调用writer.writerows(nums)时,抛出float对象不可迭代的报错。

尝试过的完整代码:

import csv
from statistics import mean
with open("E:\Chapter5\input_file_name.csv") as inputi:
    data_list=[]
    score_list=[]
    mean_list=[]
    reader=csv.reader(inputi)
    for rows in reader:
        data_list.append(rows)
    #print(len(data_list))
    for i in range(0,len(data_list)):
        score_list.append(data_list[i][1:])
    #print(score_list)
    new_list=[
        [float(x) for x in nested_lists]
        for nested_lists in score_list
    ]
    #print(new_list)
    for items in new_list:
        mean_list.append(mean(items))
    #print(mean_list)
    least_scores=sorted(mean_list)
    least_scores=least_scores[0:3]
    print(least_scores)
    with open("E:\Chapter5\output_file_name.csv",'w',newline='') as outi:
        writer=csv.writer(outi)
        writer.writerow(least_scores)

以及引发报错的修改代码:

with open("E:\Chapter5\output_file_name.csv",'w',newline='') as outi:
        writer=csv.writer(outi)
        for nums in least_scores:
            writer.writerows(nums)
解决方法

错误原因

  • writer.writerow(row):接受可迭代对象,将对象内的每个元素作为同一行的不同列写入,直接传least_scores会把三个浮点数放在同一行的三列。
  • writer.writerows(rows):接受包含多个可迭代对象的列表,每个可迭代对象对应一行。浮点数不是可迭代对象,直接传入会触发报错。

正确实现方式

以下三种方法都能满足需求:

方法1:循环调用writer.writerow,包装单元素列表

with open("E:\Chapter5\output_file_name.csv",'w',newline='') as outi:
    writer = csv.writer(outi)
    for num in least_scores:
        writer.writerow([num])  # 将单个浮点数转为单元素列表,作为一行写入

方法2:用writer.writerows传入二维列表

with open("E:\Chapter5\output_file_name.csv",'w',newline='') as outi:
    writer = csv.writer(outi)
    # 生成包含单元素子列表的二维结构,每个子列表对应一行
    writer.writerows([[num] for num in least_scores])

方法3:直接文件写入(无需csv模块)

如果需求仅为每行写入一个数值,可跳过csv模块,直接写入文件:

with open("E:\Chapter5\output_file_name.csv",'w') as outi:
    for num in least_scores:
        outi.write(f"{num}\n")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 14:01:06