我試圖讓我的代碼在 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.writerow 但我得到了錯誤“預期可迭代,而不是浮動”
我嘗試了以下代碼:
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' object is not iterable”你能幫我解決這個問題嗎?
uj5u.com熱心網友回復:
writerow() 正在尋找一個可迭代的,nums可以在串列中傳遞值以滿足:
with open("file_name.csv", 'w', newline='') as outi:
writer = csv.writer(outi)
for nums in least_scores:
writer.writerow([nums])
uj5u.com熱心網友回復:
包含更短的代碼,這有助于除錯,做得很好。下次你能分享一下完整的堆疊嗎?
我認為在這種情況下,問題在于它least_scores是一個浮動串列,但你只有一個浮動。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/520931.html
標籤:PythonCSV
