2013-03-10 101 views
0

第一非數字字符我有包含含有ABC 12345而且ABC 98765.ABC 55555<尋找具有.find在Python

爲了找到ABC然後識別號將按照下列順序我使用

index = page.find('ABC',index) 
t1 = page.find(' ',index+1) 
t2 = page.find(' ',t1+4) 

字符串這給了我12345作爲結果,但不是9876555555

如何更改第3行以查找空格和其他字符,如.<

我試圖

import re 

t2 = re.search("\d", page,t1+4) 

但是這句法被打破。

回答

3

使用正則表達式來查找下面的文字文本ABC加上可選的空格數:

match = re.search(r'ABC\s*(\d+)', page) 
if match: 
    print match.group(1) 

這個工作,無論什麼如下數字:

>>> re.search(r'ABC\s*(\d+)', 'ABC 98765.').group(1) 
'98765' 
>>> re.search(r'ABC\s*(\d+)', 'ABC 55555<').group(1) 
'55555' 

如果您需要找到多個匹配,請使用findall()代替:

matches = re.findall(r'ABC\s*(\d+)', page) 

它給你一個所有數字組的列表,按照文字ABC

>>> re.findall(r'ABC\s*(\d+)', 'Some text with ABC 98765. There is some other text too, with ABC 55555<!') 
['98765', '55555'] 
+0

謝謝你的解決方案。它是如此簡單,更好的代碼(甚至從新手的角度來看)。它比我的解決方案花費的時間要長得多(結果錯誤),我能加速嗎? – lejonet 2013-03-10 12:38:49

+0

@ lejonet8:對不起,需要更長的時間?正則表達式? – 2013-03-10 12:39:40

+0

是的,用正則表達式運行腳本。 – lejonet 2013-03-10 12:40:24