2012-09-17 91 views
0

我需要在類似於下面給出的大量字符串中找到「taxid」的值。對於這個特定的字符串,「taxid」值是'9606'。我需要放棄其他一切。 「taxid」可能出現在文本的任何地方,但總是後面跟着一個「:」,然後是數字。python正則表達式替換

score:0.86|taxid:9606(Human)|intact:EBI-999900 

如何在python中編寫正則表達式。

+0

是否有多個'taxid's?另一方面,您的描述不是替代品,而是搜索。 – sapht

+0

是的,這是可能的 – Curious

回答

4
>>> import re 
>>> s = 'score:0.86|taxid:9606(Human)|intact:EBI-999900' 
>>> re.search(r'taxid:(\d+)', s).group(1) 
'9606' 

如果有多個taxids,使用re.findall,它返回所有匹配的列表:

>>> re.findall(r'taxid:(\d+)', s) 
['9606'] 
+2

也許在那裏拋出一個初始的術語,以避免匹配「not_a_taxid:9606」? – DSM

+0

@DSM:根據您的建議更新。 –

+0

@StevenRumbalski,謝謝。但Python讓我瘋狂。爲什麼我將結果作爲元組來獲得。有時我以字符串的形式得到結果。 – Curious

0
for line in lines: 
    match = re.match(".*\|taxid:([^|]+)\|.*",line) 
    print match.groups()