Python正则表达式 - 删除所有传递特定字符的字符

时间:2012-05-02 04:26:50

标签: python expression

我有一些正则表达式,例如,看起来像这样 98374D90 483D39 3843930D393

现在我有python代码取出所有字符并保持这样的整数:

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

这让我留下了9837490,但是我需要它做的是一旦它到达角色“D”它就会掉落D以及它之后的一切所以98374D90会导致98374我该怎么做?

感谢您的帮助。

4 个答案:

答案 0 :(得分:2)

以下内容将用空字符串替换任何非数字字符 - 有效消除字符。

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

答案 1 :(得分:2)

我倾向于建议使用单引号和原始字符串:

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

它可以让你免于经常逃跑。

答案 2 :(得分:2)

另一种非正则表达式解决方案:

>>> s = '98374D90'
>>> s.partition('D')
('98374', 'D', '90')

答案 3 :(得分:0)

当您要求正则表达式时,有时正则表达式只会使事情变得复杂(即,如果您不能自己维护它们)。您可以使用更简单的功能:

from itertools import takewhile
import string

s = '98374D90'

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

返回

98374