Извлечь определенную часть текстового файла в Python 3.x - PullRequest
0 голосов
/ 21 октября 2018

Как мне сделать оператор if, чтобы прочитать из определенного места текстового файла и остановиться в определенной точке, а затем распечатать его.например, распечатывать данные одного пациента, а не весь список.начинающий программист здесь.спасибо

 ID = input("please enter a refernce id to search for the patient : ")
 info = open("data.txt", 'r')
 if ID in info: 
 # This should return only one patient's information not all the text file   
 else:
    print("not in file")
info.close()

1 Ответ

0 голосов
/ 21 октября 2018

Нам нужно знать конкретные детали того, как файл отформатирован, чтобы дать точный ответ, но вот один из способов, который может быть полезен.

Во-первых, ваша «информация» сейчас просто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")

Что-то в этом духе должно помочь.Есть, вероятно, лучшие способы в зависимости от структуры файла.Что-то может пойти не так, если пользовательский ввод недостаточно конкретен, или слово «пациент» разбросано по описаниям, но идея остается прежней.Вы должны также сделать некоторую обработку ошибок для ввода.Надеюсь, это поможет!Удачи в вашем проекте.

...