Вывод конкретной строки из файла TXT
В файле 'data.txt' (пример):
/print - function
/def - function
/class - class
Необходимо запросить у пользователя название конкретной функции, а после вывести всю строку на экран. Не понимаю как правильно и легко сделать обработчик, чтобы он понимал: функция "/print" занимает нулевую строку (по индексу), а "/def" - первую и так далее... Это справочник, по типу встроенного - help(x).
Предполагаемое решение: перебирать условиями...
f = open('data.txt', 'r')
fd = f.readlines()
user_answer = input('Введите назв. функции: ').lower()
isanswer = '/' + user_answer
if isanswer == '/print':
print(fd[0])
elif isanswer == '/def':
print(fd[1])
elif isanswer == '/class':
print(fd[2])
else:
print('Не найдено')
Код выше является рабочим, но это не осуществляет конкретного поиска по файлу, а исключения создавать самому - это как-то не серьёзно. Ломаю мозги и почему-то уверен, что есть метод поиска и отображения куда проще, чем то что вы видите. Подскажите, как реализовать задуманное? :(
Ответы (2 шт):
Я бы обработал файл и добавил его в словарь, где ключом будет название команды (типа /print), а значением вся строка файла
Пример:
name_by_command = dict()
with open('data.txt') as f:
for line in f:
line = line.strip()
name = line.split()[0]
name_by_command[name] = line
user_answer = input('Введите назв. функции: ').lower()
isanswer = '/' + user_answer
if isanswer in name_by_command:
print(name_by_command[isanswer])
else:
print('Не найдено')
Если без обработки, но с списком строк, тогда:
with open('data.txt') as f:
lines = f.readlines()
user_answer = input('Введите назв. функции: ').lower()
isanswer = '/' + user_answer
command = None
for line in lines:
line = line.strip()
if line.startswith(isanswer):
command = line
break
if command:
print(command)
else:
print('Не найдено')
А я бы сделал вместо условий один цикл:
for x in fd:
if x.find(isanswer) != -1:
print(x)
else:
print('error')