我是编程新手,但我决定接受python。
我有这个csv文件关于用户的记录小时数,看起来大致相同(但包含大约200行):
用户,项目,小时
用户1,项目A,5
用户1,项目B,10
用户2,项目A,7
用户2,项目B,12`
我想通过几个依赖于前一个的raw_input从中提取数据。例如。我首先询问你是否想要查看完整列表,如果是,则打印所有内容并关闭。如果答案为否,则转到下一个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
部分无效。
很明显那里有错误,但如果你能引导我走上正确的道路,我将不胜感激!
答案 0 :(得分:2)
你可以从csv的行中构建一个dict。
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")
答案 1 :(得分:2)
Jakob的回答很好。回答“错误”:
if User == User in reader
这显然是错误的。 User == User
为True
,不太可能位于reader
对象中。
如果你想打印一个空行,而不是使用print ""
,只需使用它:
print
此外,每当你使用大写字母作为变量名时,小猫就会死在某处。请阅读PEP8并保存小猫。
答案 2 :(得分:0)
如果要退出python程序,请使用sys.exit
:Python documentation