2012-05-02 66 views
0

我有幾個正則表達式,例如,看起來像這樣 98374D90 483D39 3843930D393Python的正則表達式 - 刪除所有字符傳遞某個字符

現在我有Python代碼取出所有的人物和保持整數像這樣:

ws = 98374D90 
clean = re.sub("\D", "", ws) 

這給我留下了9837490但我需要做的是,一旦它到達則丟棄該d,一切就這麼98374D90將導致98374之後的字符「d」我怎麼會做這個?

感謝您的幫助。

回答

2

以下將用空字符串替換任何非數字字符 - 有效地消除字符。

>>> re.sub("\D.*", "", "98374D90") 
'98374' 
+0

謝謝!作品完美:) – sean

2

我傾向於使用單引號和原始字符串推薦:

re.sub(r'D.*', '', '98374D90') 

這樣可以節省你不必經常逃跑。

0

當您請求正則表達式時,有時正則表達式只會使事情複雜化(即,如果您無法自己維護它們)。您可以使用更簡單的功能,也許是:

from itertools import takewhile 
import string 

s = '98374D90' 

print ''.join(takewhile(lambda c: c in string.digits, s)) 

回報

98374 
+0

http://www.codinghorror.com/blog/2008/06/regular-expressions-now-you-have-two-problems.html – hexparrot

+0

由於問題是關於字母'D',你可以也使用'lambda c:c!='D'。 – quodlibetor

2

另一個非正則表達式的解決方案:

>>> s = '98374D90' 
>>> s.partition('D') 
('98374', 'D', '90') 
相關問題