[英]Python reading csv files and then writing them to another
我需要使用 if else 語句對一個 csv 文件進行評分,然后將它們寫入另一個 csv 文件。
with open('arvud.csv' , 'r') as arvud:
for Hinne in arvud:
print(Hinne)
x= int(Hinne)
if x > 90:
print ("Hinne 5")
elif 80 < x < 91:
print ("Hinne 4")
elif 70 < x < 81:
print ("Hinne 3")
elif 60 < x <71:
print ("Hinne 2")
elif 51 < x < 61:
print ("Hinne 1")
elif x < 50:
print ("Hinne 0")
我有評分部分,但似乎無法找到一種方法將它們作為兩列寫入 csv 文件,一列用於成績,一列用於分數。 [在此處輸入圖片描述][1]
您可以將打印報表更改為 append 將成績列為列表。 然后將該列表寫入 csv 文件。 像這樣:
data = []
with open('arvud.csv' , 'r') as arvud:
for Hinne in arvud:
print(Hinne)
x= int(Hinne)
if x > 90:
data.append(5)
elif 80 < x < 91:
data.append(4)
elif 70 < x < 81:
data.append(3)
elif 60 < x <71:
data.append(2)
elif 51 < x < 61:
data.append(1)
elif x < 50:
data.append(0)
您應該得到一個類似於 [2, 4, 0...] 的結果列表
然后將該列表寫入 csv 文件,如下所示:
import csv
with open('csv_file_name.csv', 'a+', newline='') as file:
writer = csv.writer(file)
writer.writerows(data)
您還可以通過在每次迭代中將每個等級附加到 csv 文件來節省時間,但我想提供一個答案,該答案使用您的代碼來幫助您根據到目前為止所做的事情了解下一步要采取的步驟。
您可以將當前的打印語句重定向到一個文件。
代碼
import sys
old_stdout = sys.stdout # cache current setting of stdout
with open('arvud.csv' , 'r') as arvud, \
open('out_arvud.csv', 'w') as sys.stdout: # set stdout to file
for Hinne in arvud:
print(Hinne)
x= int(Hinne)
if x > 90:
print ("Hinne 5")
elif 80 < x < 91:
print ("Hinne 4")
elif 70 < x < 81:
print ("Hinne 3")
elif 60 < x <71:
print ("Hinne 2")
elif 51 < x < 61:
print ("Hinne 1")
elif x < 50:
print ("Hinne 0")
sys.stdout = old_stdout # reset stdout initial setting
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.