Нам нужно знать конкретные детали того, как файл отформатирован, чтобы дать точный ответ, но вот один из способов, который может быть полезен.
Во-первых, ваша «информация» сейчас простоTextIOWrapper объект.Вы можете сказать, запустив print(type(info))
.Вам нужно сделать это info = open('data.txt', 'r').read()
, чтобы дать вам строку текста, или info = open('data.txt', 'r').readlines()
, чтобы дать вам список текста построчно, если формат - просто текст.
Предполагая, что данные выглядятПримерно так:
Patient: Charlie
Age = 99
Description: blah blah blah
Patient: Judith
Age: 100
Description: blah blah blahs
Вы можете сделать следующее:
Сначала найдите и сохраните индекс нужного вам идентификатора.Во-вторых, найдите и сохраните индекс какой-либо строки, которая обозначает новый идентификатор.В данном случае это слово «пациент».Наконец, верните строку между этими двумя индексами.
Пример:
ID = input("please enter a reference id to search for the patient: ")
info = open("data.txt", 'r').read()
if ID in info:
#find() returns the beginning index of a string
f = info.find(ID)
goods = info[f:]
l = goods.find('Patient')
goods = goods[:l]
print(goods)
else:
print("not in file")
Что-то в этом духе должно помочь.Есть, вероятно, лучшие способы в зависимости от структуры файла.Что-то может пойти не так, если пользовательский ввод недостаточно конкретен, или слово «пациент» разбросано по описаниям, но идея остается прежней.Вы должны также сделать некоторую обработку ошибок для ввода.Надеюсь, это поможет!Удачи в вашем проекте.