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'

または、区切り文字が 1 つしかない場合は、index関数を使用して文字列の新しいスライスを作成できます。

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

Use a regular expression:

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 に答える