0

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

现在我有python代码取出所有字符并保持整数,如下所示:

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

这给我留下了 9837490 但我需要它做的是一旦它到达字符“D”它会丢弃 D 以及它之后的所有内容,因此 98374D90 将导致 98374 我该怎么做?

谢谢您的帮助。

4

4 回答 4

2

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

>>> re.sub("\D.*", "", "98374D90")
'98374'
于 2012-05-02T04:29:06.630 回答
2

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

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

它使您不必经常逃跑。

于 2012-05-02T04:31:39.723 回答
2

Another non-regex solution:

>>> s = '98374D90'
>>> s.partition('D')
('98374', 'D', '90')
于 2012-05-02T06:27:10.583 回答
0

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

from itertools import takewhile
import string

s = '98374D90'

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

返回

98374
于 2012-05-02T05:02:36.873 回答