我正在使用python3 re
模块来去除字符串,而不是数字或'.'
我的第一次尝试是这样:
r = re.sub('[^0-9].', '', s)
当然,任何时候只要我有'.'
都行不通。因此,我在'.'
前面添加了一个反斜杠,它非常有效。
我的问题是,尽管我理解了为什么第一个表达式不起作用,但我不明白为什么它会同时与'.'
字符和紧随其后的字符匹配。
通过阅读文档,我期望的是给定一个字符串'15.45'
,我最终会得到一个这样的字符串:'1545'
,因为'.'
将匹配所有我已经排除的0-9以外的字符。
有人可以启发我这里发生的事情吗?
答案 0 :(得分:2)
您要用[^0-9].
匹配两个字符。
匹配项1:不是数字的内容([^0-9]
)
比赛2:任何事情(.
)
将句号匹配(.
)放入“不是这些字符”集中:
import re
s = "b15_.45a"
re.sub('[^.0-9]+', '', s)
# '15.45'
这将为您提供“一串不是数字或'。'的字符串。”