0

我是编程新手,但我决定使用 python。

我有这个关于用户记录小时数的 csv 文件,大致如下(但包含大约 200 行):

User,Project,Hours
User1,ProjectA,5
User1,ProjectB,10
User2,ProjectA,7
User2,ProjectB,12`

我想通过几个依赖于前一个的 raw_inputs 从中提取数据。例如。我会首先询问您是否想查看完整列表,如果是,请打印所有内容并关闭。如果答案是否定的,则继续下一个 raw_input,例如。输入您要查看的用户。

我有一些代码,但我知道它仍然很基础,但由于我是新手,所以我无法找到解决方案。帮助表示赞赏..

import csv
reader = csv.reader(open("loggedhours.csv", "rb"))
Team = raw_input("Do you want to see detailed team numbers? Y/N: ")

if Team =="y":
    for User, Project, Hours in reader:
        print User, Project, Hours

else:
    print "ok"
    print ""

User = raw_input("Enter user ID you wish to check: ")

if User == User in reader:
    for User, Project, Hours in reader:
        print User
else:
    print "ok"

显然在第二个 raw_input 之前缺少一些行,这将使程序完成。

但是在第一部分,当答案 == y 时我得到了正确的结果,但是当答案 == y 时我没有得到正确的结果。else零件不工作。

很明显那里有错误,但如果你能指引我走向正确的道路,我将不胜感激!

4

3 回答 3

2

Jakob's answer is a good read. In answer to "mistakes":

if User == User in reader

This is obviously wrong. The User == User is True, which isn't likely to be in the reader object.

If you want to print an empty line, in stead of using print "", just use this:

print

Also, every time you use caps for your a variable name, a kitten dies somewhere. Please read PEP8 and save the kittens.

于 2011-02-18T11:14:39.270 回答
2

您可以从 csv 的行构建一个字典。

teams = {}
reader = csv.reader(open("loggedhours.csv", "rb"))
for team in reader:
    teams[team[0]] = (team[1], team[2])

def print_teamnumbers():
    for user in teams:
        print "%s: %s" % (user, teams[user])

def specific_lookup(user_id):
    print teams.get(user_id, "User not found") 
于 2011-02-18T10:36:45.020 回答
0

如果要退出 python 程序,请使用sys.exitPython 文档

于 2011-02-18T10:40:17.967 回答