Проект для возврата строки в текстовом файле на Python из пользовательского ввода

code = raw_input("Enter Code: ')
for line in open('test.txt', 'r'):
    if code in line:
        print line
    else:
        print 'Not in file'

Файл test.txt выглядит следующим образом

A        1234567
AB       2345678
ABC      3456789
ABC1     4567890

Когда ввод равен A Строка печати возвращает все строки с A вместо только первой строки. Примечание: файл test.txt содержит приблизительно 2000 записей. Я просто хочу вернуть строку с числами для того, что когда-либо пользователь вводил на данный момент

1 ответ

Как отмечает @Wooble в комментариях, проблема заключается в том, что вы используете in оператор для проверки на эквивалентность, а не членство.

code = raw_input("Enter Code: ")
for line in open('test.txt', 'r'):
    if code.upper() == line.split()[0].strip().upper():
        print line
    else:
        print 'Not in file'
        # this will print after every line, is that what you want?

Тем не менее, вероятно, лучшая идея (в зависимости от вашего варианта использования в любом случае) состоит в том, чтобы вытянуть файл в словарь и использовать его вместо этого.

def load(filename):
    fileinfo = {}
    with open(filename) as in_file:
        for line in in_file:
            key,value = map(str.strip, line.split())
            if key in fileinfo:
                # how do you want to handle duplicate keys?
            else:
                fileinfo[key] = value
    return fileinfo

Затем после загрузки все это в:

def pick(from_dict):
    choice = raw_input("Pick a key: ")
    return from_dict.get(choice, "Not in file")

И запустить как:

>>> data = load("test.txt")
>>> print(pick(data))
Pick a key: A
1234567
Другие вопросы по тегам