如何在Python中将浮点数列表写入CSV文件

i2byvkas  于 2022-12-06  发布在  Python
关注(0)|答案(2)|浏览(186)

我试图让我的代码在一个CSV文件中写下面的列表(3个浮点数的列表),分为3行。

least_scores=[14.285714285714286, 14.375, 16.5]

我希望它被保存在CSV文件中的行,如下所示:

14.285714285714286
14.375
16.5

但是程序把所有的数字保存在一行中,或者当我改变代码时,我得到了浮点数不可迭代的错误。我试过很多方法,到处检查了很多类似的问题,但是我找不到我问题的解决方案。
下面的代码是我到目前为止尝试过的代码:

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)

使用上面的代码,列表项将全部保存在一行中。
因此我尝试使用writer.writerows而不是writer.writero w,但得到错误“预期为可迭代,而不是浮点”
我尝试了下面的代码:

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

并得到错误“'float'对象不可迭代”您能帮我解决这个问题吗?

7d7tgy0s

7d7tgy0s1#

writerow()正在寻找可迭代对象,nums中的值可以在列表中传递以满足:

with open("file_name.csv", 'w', newline='') as outi:
    writer = csv.writer(outi)
    for nums in least_scores:
        writer.writerow([nums])
7uzetpgm

7uzetpgm2#

很好地包含了较短的代码,这有助于调试。你下次能分享完整的堆栈吗?
我认为在这个例子中,问题是least_scores应该是一个浮点数列表,但你只有一个浮点数。

相关问题