有没有更好的方法从 python 3 中的字符串中提取数字

Vio*_*ist 2 python string lambda integer python-3.8

我有“V70N-HN”形式的字符串,我只需要取出 70 即可。第一个字符可以是任意数量的字母,也可以根本没有。最终角色也是如此。我过去使用过它的变体,但它在 python 2 中看起来更干净,没有将“join”和“list”混在一起:

>>> a = "V70N-HN"
>>> i = int(''.join(list(filter(lambda x: x.isdigit(), a))))
>>> i
70
Run Code Online (Sandbox Code Playgroud)

无论如何,这不再是Pythonic了。有没有更简单、更容易理解的方法来达到相同的结果?

Sta*_*eta 5

这是进行 @Barmar 建议的正则表达式搜索的一种方法:

>>> import re
>>> int(re.search("\d+", "V70N-HN")[0])
70
Run Code Online (Sandbox Code Playgroud)