Python正则表达式-删除传递给特定字符的所有字符
例如,我有几个正则表达式,看起来像这样 98374D90 483D39 3843930D393 现在我有python代码去掉所有字符并保留整数,如下所示:Python正则表达式-删除传递给特定字符的所有字符,python,expression,Python,Expression,例如,我有几个正则表达式,看起来像这样 98374D90 483D39 3843930D393 现在我有python代码去掉所有字符并保留整数,如下所示: ws = 98374D90 clean = re.sub("\D", "", ws) 这就给我留下了9837490,但我需要它做的是,一旦它到达字符“D”,它会删除D,然后所有的东西都会删除,所以98374D90会导致98374,我该怎么做 谢谢你的帮助 以下内容将用空字符串替换任何非数字字符——有效地消除该字符 >>>
ws = 98374D90
clean = re.sub("\D", "", ws)
这就给我留下了9837490,但我需要它做的是,一旦它到达字符“D”,它会删除D,然后所有的东西都会删除,所以98374D90会导致98374,我该怎么做
谢谢你的帮助 以下内容将用空字符串替换任何非数字字符——有效地消除该字符
>>> re.sub("\D.*", "", "98374D90")
'98374'
下面将用空字符串替换任何非数字字符——有效地消除该字符
>>> re.sub("\D.*", "", "98374D90")
'98374'
我倾向于建议使用单引号和原始字符串:
re.sub(r'D.*', '', '98374D90')
它使您不必频繁地转义。我倾向于建议使用单引号和原始字符串:
re.sub(r'D.*', '', '98374D90')
当你请求正则表达式时,有时正则表达式只会使事情变得复杂(例如,如果你自己不能维护它们的话)。您可以使用更简单的函数,也许:
from itertools import takewhile
import string
s = '98374D90'
print ''.join(takewhile(lambda c: c in string.digits, s))
返回
98374
当您请求正则表达式时,有时正则表达式只会使事情变得复杂(例如,如果您自己无法维护它们)。您可以使用更简单的函数,也许:
from itertools import takewhile
import string
s = '98374D90'
print ''.join(takewhile(lambda c: c in string.digits, s))
返回
98374
另一个非正则表达式解决方案:
>>> s = '98374D90'
>>> s.partition('D')
('98374', 'D', '90')
另一个非正则表达式解决方案:
>>> s = '98374D90'
>>> s.partition('D')
('98374', 'D', '90')
因为问题是关于字母“D”,你也可以使用
lambda c:c!='D'
。由于问题是关于字母“D”,您也可以使用lambda c:c!='D'
。