1

我有一个格式为:

name = '>n263590 | AK138667 | mRNAlike lncRNA |'

所以当我想对它进行分区时,我使用了字符串:

name = name.partition(' |')[0]

我尝试对格式中的字符串使用相同的概念:

name2 = '>mm10_refGene_NM_147038 range=chr1:92479681-92480629'

我只想要以“NM”开头的区域,直到数字结尾

#i want the output to be name2 = 'NM_147038'

所以我尝试了

name2 = name2.partition('NM','range')|[0]

但它没有用

我想我知道一种使用正则表达式的方法,但它的内存效率不是很高。无论如何我可以使用分区工具来执行这个吗?

4

3 回答 3

3

使用split(),这是完成这项工作的一种简单方法。例如:

'NM' + name2.split('NM')[1]
=> 'NM_147038 range=chr1:92479681-92480629'

或者,如果只有一个分隔符,您可以使用该index函数创建一个新的字符串切片:

name2[name2.index('NM'):]
=> 'NM_147038 range=chr1:92479681-92480629'
于 2013-03-14T18:40:47.117 回答
2

使用正则表达式:

import re

re.findall(r'(NM_\d*)', name2)
于 2013-03-14T18:42:55.103 回答
1
import re

m = re.search(r"(NM_\d+)\s+range", name2)
if m:
   print(m.group(1))
于 2013-03-14T19:18:47.883 回答