我想从文本文档中读取令牌并检查特定的关键字。我该怎么办?
例如,我的文件如下所示:
<protein id="Q11" name="HUMAN" length="655" crc64="30E1C1D138">
<match id="G3DSA:3.30.160.60" name="ZC2f_H2/iegse_NA-bd" dbname="GE3D" status="T" evd="HMPfm">
<ipr id="IPR013087" name="Zinc finger, H2-type/inrase, D-bindg" tpe="Dain" />
<ln stt="114" end="142" sc="1.0E-8" />
</match>
(我要跳过第一行,并在第二行中搜索dbname的令牌,该令牌必须等于GE3D。如果是,则要存储stt编号和结束编号。)
*所以我这样做了,但我不知道为什么它只返回一个数字作为开始和结束,因为一个以上的数字应该满足要求:
从lxml导入主菜
文件名='inQ14591.txt'
使用open(filename,'rb')as f:
root = etree.parse(f)
for ln in root.xpath("/protein/match[@dbname='GE3D']/ln"):
start = ln.get("stt")
end = ln.get("end")
打印(stt)
打印结束
最佳答案
似乎您可以使用BeautifulSoup
进行解析,但是我不确定您要查找的是什么
from BeautifulSoup import BeautifulSoup
text = '''<protein id="Q11" name="HUMAN" length="655" crc64="30E1C1D138">
<match id="G3DSA:3.30.160.60" name="ZC2f_H2/iegse_NA-bd" dbname="GE3D" status="T" evd="HMPfm">
<ipr id="IPR013087" name="Zinc finger, H2-type/inrase, D-bindg" tpe="Dain" />
<ln stt="114" end="142" sc="1.0E-8" />
</match>'''
soup= BeautifulSoup(text)
res=soup.findAll(dbname='GE3D')
根据您的评论更新以找到
stt
值,您需要找到带有ln
的行,然后使用带有stt
的标签,如下所示:stt_value = soup.findAll('ln')[0]['stt'] # u'114'
end_value = soup.findAll('ln')[0]['end'] # u'142'
关于python - 在python上读取 token ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11365448/