使用内置str
方法的最简单方法:
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)
' '
- 从返回的末尾开始在 s 处拆分字符串['COADREAD ATF7 Missense_Mutation NGXA-AZ-3984', 'P17544', 'A436T']
。假设我们只寻找最后两个元素,我们用切片删除第一个元素,所以我们得到d.rsplit(' ', 2)[1:]
which given ['P17544', 'A436T']
。
使用解包,我们命名我们的变量,并通过使用保证它的长度为 2 myid, token = d.rsplit(' ', 2)[1:]
- 如果它没有恰好两个元素,则赋值将失败。
现在这myid
应该是您希望使用切片从令牌中删除第一个和最后一个字符的 id,即token = token[1:-1]
.
然后:
print myid, token
# P17544 436
关于查找的评论:
在解析文件行后查找:
lookup = {}
for line in file:
# do steps above so you have myid, token
lookup[myid] = token
然后lookup['P17544'] 将返回'436'
希望这更清楚...