如何在Python中从字符串中删除数字以外的字符?

我们有多种方法可以实现这一目标。我们可以使用for ... if语句过滤掉非数字字符。例如:

>>> s = "H3ll0 P30P13"
>>> ''.join(i for i in s if i.isdigit())
'303013'

我们还可以使用filter和lambda函数过滤掉字符。例如:

>>> s = "H3ll0 P30P13"
>>> filter(lambda x: x.isdigit(), s)
'303013'

尽管对于这样一个简单的任务来说过于夸张,但是我们也可以使用正则表达式来实现相同的目的。\ D字符(非数字)可以替换为空字符串。例如:

>>> import re
>>> s = "H3ll0 P30P13"
>>> re.sub("\D", "", s)
'303013'