从字母表中删除字母时如何将点保留在字符串中
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']
我有一个字符串: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']