从字母表中删除字母时如何将点保留在字符串中

How can i keep the dot in a string while removing letters from the alphabet

我有一个字符串:lst = 'sbs1.23444nroen' 我使用 lst2 = ''.join(filter(str.isdigit, lst)) 删除所有字母,所以结果是:lst2 = '123444' 有没有办法包含“。”这样结果就是没有字母但保留点的“1.23444”?

lst2 = ''.join(filter(lambda x: str.isdigit(x) or x=='.', lst))

一个更友好的眼睛解决方案,如果您想包含更多字符,则可扩展。

s = 'sbs1.23444nroen'
toKeep = set('0123456789.')
s = ''.join(ch for ch in s if ch in toKeep)
print(s)

另一种解决方案是使用正则表达式,尽管 set 解决方案是迄今为止最好的。

>>> re.findall(r"\d+\.\d*", lst)
['1.23444']

还有抓取其他号码组的额外好处:

>>> re.findall(r"\d+\.?\d*", "sbs1.23444nroe631n")
['1.23444', '631']