使用用户输入从csv fi提取数据

2024-09-28 01:32:13 发布

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

我对Python非常陌生,但我正在努力学习更多,我给自己的第一个小项目是创建一个代码,可以接收给定用户名的输入,然后输出他们在某个项目上工作的小时数。我收到一个csv在周末在我的部门的员工,在这个csv我有各种各样的项目,他们正在工作,并致力于该项目的时间。csv文件的关键在于,该用户有重复的项目,所以当我的csv输出时,我需要它只显示一个项目名称和所有与该项目相关的小时数。如何让我的代码读取重复项,只计算重复项的小时数,并且只使用一个项目名?在

以下是我目前为止想出的代码:

import csv
with open('Report.csv') as csvfile:
    readCSV = csv.reader(csvfile, delimiter=',')
    firsts = []
    lasts = []
    projects = []
    hours = []
    for row in readCSV:
        first = row[0]
        last = row[1]
        project = row[2]
        hour = row[3]

        firsts.append(first)
        lasts.append(last)
        projects.append(project)
        hours.append(hour)

    First_name = input("Please enter the first name: ")
    First_1 = firsts.index(First_name)
    Last_1 = lasts[First_1]
    project_1 = projects[First_1]
    hours_1 = hours[First_1]
    print(First_1, Last_1, project_1, hours_1)

这里是一个csv的示例

^{pr2}$

Tags: csvcsvfile项目代码nameprojectrowprojects
1条回答
网友
1楼 · 发布于 2024-09-28 01:32:13

我敢说有更好的方法来对付熊猫,但这也会奏效:

import csv

# I've used full name to avoid duplicate first names in report 
full_name = input('Enter your full name: ')

with open('Report.csv') as csvfile:
    hour_summation = {}
    read_csv = csv.reader(csvfile, delimiter=',')
    for row in read_csv:
        if ' '.join((row[0], row[1])) == full_name.strip():
            hour_summation[row[2]] = hour_summation.get(row[2], 0) + int(row[3])

print('This is {} full hours report:'.format(full_name))
for k, v in hour_summation.items():
    print(k + ': ' + str(v) + ' hours')

Sujatha Kavuri的结果

Enter your full name: Sujatha Kavuri
This is Sujatha Kavuri full hours report:
Beeline Blank: 45 hours
OPS-0001 General Operational Support: 6 hours

编辑- 我只采样了一半文件,所以结果不完整。
希望这有帮助。在

相关问题 更多 >

    热门问题