Python 删除所有内容,但留下数字和点

Python 删除所有内容,但留下数字和点,python,string,python-2.7,Python,String,Python 2.7,此代码旨在删除所有内容,但不保留数字 a = "1.1.1.1" b = re.sub('[^0-9]', '', a) 但我也想保留点。不使用正则表达式: >>> ''.join(c for c in a if c.isdigit() or c == '.') '1.1.1.1' >>> a = 'hello.1.number' >>> ''.join(c for c in a if c.isdigit() or c == '.') '.

此代码旨在删除所有内容,但不保留数字

a = "1.1.1.1"
b = re.sub('[^0-9]', '', a)

但我也想保留点。

不使用正则表达式:

>>> ''.join(c for c in a if c.isdigit() or c == '.')
'1.1.1.1'
>>> a = 'hello.1.number'
>>> ''.join(c for c in a if c.isdigit() or c == '.')
'.1.'
[]
表示仅匹配这些字符

[^]
表示匹配除这些字符以外的所有字符

0-9
is 0123456789

是。但是要小心。因为外部
[]
通常用于匹配任何单个字符

a = 1.1.1.1
b = re.sub('[^\d\.]', '', a)

相反
0-9
可以替换为
\d
,因为它匹配所有数字字符,而
\。
是必需的,因为
字符是通配符。

您希望b是a的安全版本,还是需要将a拆分为数组,例如b=[1,1,1,1]?无需在字符类内转义
[…]
)因为特殊字符在字符类中失去了意义。非常好的解决方案!谢谢!
a = 1.1.1.1
b = re.sub('[^\d\.]', '', a)