我有一些正则表达式,例如,看起来像这样 98374D90 483D39 3843930D393
现在我有python代码取出所有字符并保持这样的整数:
ws = 98374D90
clean = re.sub("\D", "", ws)
这让我留下了9837490,但是我需要它做的是一旦它到达角色“D”它就会掉落D以及它之后的一切所以98374D90会导致98374我该怎么做?
感谢您的帮助。
答案 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