Запрос csv с raw_input в Python - PullRequest
       4

Запрос csv с raw_input в Python

0 голосов
/ 18 февраля 2011

Я новичок в программировании, но я решил взять Python.

У меня есть этот CSV-файл о количестве зарегистрированных часов пользователями, который выглядит примерно так (но содержит около 200 строк):

Пользователь, проект, часы
User1, ProjectA, 5
User1, ProjectB, 10
Пользователь2, ProjectA, 7
Пользователь2, 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 не работает.

Очевидно, что там есть ошибки, но если бы вы могли направить меня на правильный путь, я был бы очень признателен!

Ответы [ 3 ]

2 голосов
/ 18 февраля 2011

Ответ Якоба - хорошее чтение.В ответ на «ошибки»:

if User == User in reader

Это явно неправильно.User == User - это True, что вряд ли будет в объекте reader.

Если вы хотите напечатать пустую строку вместо print "", просто используйте это:

print

Кроме того, каждый раз, когда вы используете прописные буквы для имени переменной, котенок где-то умирает.Пожалуйста, прочитайте PEP8 и сохраните котят.

2 голосов
/ 18 февраля 2011

Вы можете построить дикт из рядов 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") 
0 голосов
/ 18 февраля 2011

Если вы хотите выйти из программы Python, используйте sys.exit: Документация Python

...