在python 3.x中提取文本文件的特定部分

时间:2018-10-21 04:44:54

标签: python python-3.x python-2.7 notepad

如何使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 :(得分:0)

我们需要知道如何格式化文件的具体细节,以便给出确切的答案,但这是一种可能有用的方法。

首先,您的“信息”现在只是一个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的索引。其次,找到并存储一些表示新ID的字符串的索引。在这种情况下,这就是“患者”一词。最后,返回这两个索引之间的字符串。

示例:

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")

遵循这些原则可以解决问题。根据文件的结构,可能有更好的方法。如果用户的输入不够具体,或者描述中分散了“病人”一词,那么事情可能会出错,但是想法仍然相同。您还应该对输入进行一些错误处理。希望对您有所帮助!祝您项目顺利。