Python读取csv文件,然后将它们写入另一个

2024-10-03 15:25:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要使用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]


Tags: 文件csvinforifaswith语句
2条回答

您可以更改打印语句以将分数附加到列表中。然后将该列表写入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中写入(即,通常是您的终端)
  • 我们可以将此临时文件更改为文件

代码

 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

相关问题 更多 >