簡體   English   中英

Python 讀取 csv 個文件,然后將它們寫入另一個

[英]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 文件來節省時間,但我想提供一個答案,該答案使用您的代碼來幫助您根據到目前為止所做的事情了解下一步要采取的步驟。

您可以將當前的打印語句重定向到一個文件。

  • stdout 也是 print 寫入的地方(即通常是您的終端)
  • 我們可以將這個臨時文件更改為文件

代碼

 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM