有没有办法找到法尔塞并夺取下一个代币瓦卢

2024-09-24 02:28:33 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我在服务器上有一个文件:

COADREAD ATF7错义突变NGXA-AZ-3984 P17544 A436T

共恐惧ATG10错义突变NGXA-AB-A010 Q9H0Y0 H133N

我的目标是找到id(P17544),它在文件的第5列中,并捕获/存储(稍后我需要打印这个数字)它后面的令牌的编号是436(这个数字假设在两个字母之间),来自第6列中的A436T。 我有办法做到吗?我以前在lxml上做过一些工作,但仍然不知道如何做到这一点。提前谢谢

这是我所拥有的

文件=打开('文本.txt','r')

查找={}

对于文件中的行:

myid, token = file.rsplit(' ', 2)[1:]

token = token[1:-1] 

Tags: 文件服务器tokenab数字az错义a010
2条回答

听起来很简单。。。沿空格分开-然后提取第五个字段。。。第六个字段的所有数字。还是我错过了什么?在

>>> tokens = "COADREAD ATF7 Missense_Mutation NGXA-AZ-3984 P17544 A436T".split()
>>> print tokens[4]
P17544
>>> print ''.join([c for c in tokens[5] if c.isdigit()])
436

使用内置方法的最简单方法

d = 'COADREAD ATF7 Missense_Mutation NGXA-AZ-3984 P17544 A436T'
myid, token = d.rsplit(' ', 2)[1:] # will except if can't be unpacked so you know you've got exactly 2 elements...
token = token[1:-1]

如果你想在两个字母之间指定数字,你可以使用正则表达式。。。re.match('[A-Z](\d{3})[A-Z]', token[1]) # or similar...

澄清:

d.rsplit(' ', 2)-从返回['COADREAD ATF7 Missense_Mutation NGXA-AZ-3984', 'P17544', 'A436T'] 的结尾开始拆分' '处的字符串。假设我们只查找最后2个元素,我们用一个切片删除第一个元素,这样我们得到d.rsplit(' ', 2)[1:],它给出{}。在

使用unpacking,我们命名变量,并通过使用myid, token = d.rsplit(' ', 2)[1:]来保证它的长度为2—如果它没有正好两个元素,赋值将失败。在

既然myid应该是您想要的id,您可以使用切片(slicing)token = token[1:-1]从令牌中删除第一个和最后一个字符。在

然后:

^{pr2}$

关于查找的评论:

解析文件行后查找:

lookup = {}
for line in file:
    # do steps above so you have myid, token
    lookup[myid] = token

然后查找['P17544']将返回“436”

希望这更清楚。。。在

相关问题 更多 >