Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python正则表达式-删除传递给特定字符的所有字符_Python_Expression - Fatal编程技术网

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

Python正则表达式-删除传递给特定字符的所有字符,python,expression,Python,Expression,例如,我有几个正则表达式,看起来像这样 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("\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'