【问题标题】:Remove everything but leave numbers and dots删除所有内容,但留下数字和点
【发布时间】:2014-09-27 06:13:13
【问题描述】:

此代码旨在删除除留下数字之外的所有内容

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

但我也想保留点。

【问题讨论】:

  • 你想要 b 到 a 的安全版本,还是需要将 a 拆分成一个数组,例如b=[1,1,1,1] ?

标签: python string python-2.7


【解决方案1】:

试试

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

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

【讨论】:

  • 很好的解决方案!谢谢!
【解决方案2】:
>>> a='1.1.1.1'
>>> b = re.sub('[^0-9\.]', '', a)
>>> b
'1.1.1.1'
>>> a='comp.languages.python'
>>> b = re.sub('[^0-9.]', '', a)
>>> b
'..'

[] 表示仅匹配这些字符。

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

0-9 是 0123456789

. 是。但要小心。因为在[]之外,它通常用于匹配任何单个字符

【讨论】:

  • 无需在字符类 ([...]) 内转义 .,因为特殊字符在字符类中失去了意义。
【解决方案3】:

不使用正则表达式:

>>> ''.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.'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-02
    • 1970-01-01
    • 2011-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多