在Python中对字符串进行分区

在Python中对字符串进行分区,python,string,set,Python,String,Set,我有一个字符串,格式如下: name = '>n263590 | AK138667 | mRNAlike lncRNA |' name2 = '>mm10_refGene_NM_147038 range=chr1:92479681-92480629' 所以当我想对它进行分区时,我使用了字符串: name = name.partition(' |')[0] name2[name2.index('NM'):] => 'NM_147038 range=chr1:92479681

我有一个字符串,格式如下:

name = '>n263590 | AK138667 | mRNAlike lncRNA |'
name2 = '>mm10_refGene_NM_147038 range=chr1:92479681-92480629'
所以当我想对它进行分区时,我使用了字符串:

name = name.partition(' |')[0]
name2[name2.index('NM'):]
=> 'NM_147038 range=chr1:92479681-92480629'

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

name = '>n263590 | AK138667 | mRNAlike lncRNA |'
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]
但它不起作用

我想我知道一种使用regex的方法,但是它不是很高效。 我是否可以使用分区工具执行此操作

使用
split()
,这是一种简单的方法。例如:

'NM' + name2.split('NM')[1]
=> 'NM_147038 range=chr1:92479681-92480629'
或者,如果只有一个分隔符,则可以使用
index
函数创建字符串的新片段:

name = name.partition(' |')[0]
name2[name2.index('NM'):]
=> 'NM_147038 range=chr1:92479681-92480629'
使用
split()。例如:

'NM' + name2.split('NM')[1]
=> 'NM_147038 range=chr1:92479681-92480629'
或者,如果只有一个分隔符,则可以使用
index
函数创建字符串的新片段:

name = name.partition(' |')[0]
name2[name2.index('NM'):]
=> 'NM_147038 range=chr1:92479681-92480629'

使用正则表达式:

import re

re.findall(r'(NM_\d*)', name2)

使用正则表达式:

import re

re.findall(r'(NM_\d*)', name2)

恐怕你的语法不太正确。你真的读过文档了吗?分区需要一个参数,但我一直在寻找一种节省内存的方法来实现这一点。恐怕你的语法还远远不正确。你真的读过文档了吗?分区需要一个参数,但我一直在寻找一种节省内存的方法我之所以要避免re.findall是因为在某些情况下,字符串中再次出现nmddd,但是它没有被一个“range”隔开。我有没有办法用re.search来做一个类似的构造?如果你想确保它后面跟一个
range
,请用
(NM\ud*)(?=range)
。我之所以试图避免re.findall,是因为在某些情况下,字符串中再次出现nmddd,但是它没有被一个“范围”隔开。有没有一种方法可以使用re.search来创建一个类似的构造?如果您想确保它后面跟一个
范围,请使用
(NM\d*)(?=范围)