首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用用户输入从csv文件中提取数据

使用用户输入从csv文件中提取数据
EN

Stack Overflow用户
提问于 2017-12-04 23:57:26
回答 1查看 1.5K关注 0票数 2

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

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

代码语言:javascript
复制
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的一个示例

代码语言:javascript
复制
First   Last    Project             Hours
David   Ayers   AD-0002  Training   24
Oriana  Morfitt AD-0002  Training   24
David   Ayers   AD-0003  Personal Time  8
David   Ayers   AD-0004  Sick Time  0
Oriana  Morfitt AD-0005  Vacation   40
Sujatha Kavuri  Beeline Blank   29
Sujatha Kavuri  Beeline Blank   16
Sujatha Kavuri  OPS-0001 General Operational Support    6
Jeff    Moore   OPS-0001 General Operational Support    5
Sri Mantri  SRV-0001 Service Requests for Base and Direct Services  4
Prasanth    Musunuru    SRV-0001 Service Requests for Base and Direct Services  11
Prasanth    Musunuru    SRV-0001 Service Requests for Base and Direct Services  10
Jeff    Moore   SRV-0006 Standards and Processes    5
Jeff    Moore   SRV-0006 Standards and Processes    3
Jeff    Moore   SRV-2503 Internet Access Infrastructure Maintenance & Support   12.5
Jeff    Moore   SRV-2503 Internet Access Infrastructure Maintenance & Support   7
Jeff    Moore   0024495915 Work Instructions (infrastructure) - time tracking   1
Sri Mantri  0026184229 Margin Controlling Java Rewrite  4
Sujatha Kavuri  0029157489 SCRM Life Cycle Extension    3
Jeff    Moore   0031369443 Shopcall Attachment Changes  1
Jeff    Moore   0031500942 MP Strategy 2015 - Spot PO via EDI (time tracking only) - 0031500942 1
EN

回答 1

Stack Overflow用户

发布于 2017-12-05 00:55:31

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

代码语言:javascript
复制
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的结果

输入您的全名: Sujatha Kavuri 这里是Sujatha Kavuri全时报道: 直线空白: 45小时 OPS-0001一般业务支助:6小时

编辑-我只采样了一半的文件,所以结果不完整。

希望这能有所帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47643944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档