所以我在服务器上有一个文件:
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]
听起来很简单。。。沿空格分开-然后提取第五个字段。。。第六个字段的所有数字。还是我错过了什么?在
使用内置方法的最简单方法
如果你想在两个字母之间指定数字,你可以使用正则表达式。。。
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}$关于查找的评论:
解析文件行后查找:
然后查找['P17544']将返回“436”
希望这更清楚。。。在
相关问题 更多 >
编程相关推荐