例如,我有一些正则表达式,看起来像这样 98374D90 483D39 3843930D393
现在我有python代码取出所有字符并保持整数,如下所示:
ws = 98374D90
clean = re.sub("\D", "", ws)
这给我留下了 9837490 但我需要它做的是一旦它到达字符“D”它会丢弃 D 以及它之后的所有内容,因此 98374D90 将导致 98374 我该怎么做?
谢谢您的帮助。
例如,我有一些正则表达式,看起来像这样 98374D90 483D39 3843930D393
现在我有python代码取出所有字符并保持整数,如下所示:
ws = 98374D90
clean = re.sub("\D", "", ws)
这给我留下了 9837490 但我需要它做的是一旦它到达字符“D”它会丢弃 D 以及它之后的所有内容,因此 98374D90 将导致 98374 我该怎么做?
谢谢您的帮助。
以下将用空字符串替换任何非数字字符 - 有效地消除该字符。
>>> re.sub("\D.*", "", "98374D90")
'98374'
我倾向于推荐使用单引号和原始字符串:
re.sub(r'D.*', '', '98374D90')
它使您不必经常逃跑。
Another non-regex solution:
>>> s = '98374D90'
>>> s.partition('D')
('98374', 'D', '90')
当您请求正则表达式时,有时正则表达式只会使事情变得复杂(即,如果您不能自己维护它们)。您可以使用更直接的功能,也许:
from itertools import takewhile
import string
s = '98374D90'
print ''.join(takewhile(lambda c: c in string.digits, s))
返回
98374