我试图让我的代码在一个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'对象不可迭代”您能帮我解决这个问题吗?
2条答案
按热度按时间7d7tgy0s1#
writerow()正在寻找可迭代对象,
nums
中的值可以在列表中传递以满足:7uzetpgm2#
很好地包含了较短的代码,这有助于调试。你下次能分享完整的堆栈吗?
我认为在这个例子中,问题是
least_scores
应该是一个浮点数列表,但你只有一个浮点数。