在python中过滤文本中的数值

rof*_*fls 1 python regex

我知道我可以使用正则表达式在python中过滤数字中的文本,但这是最好的方法吗?

说我有一个字符串列表:

a="gamma function: 78"
b="factorial value: 120"
c="random number: 33"
Run Code Online (Sandbox Code Playgroud)

是否有一个很好的功能,可以做到以下几点?

for string in [a,b,c]:
    return numbers(string)
78
120
33
Run Code Online (Sandbox Code Playgroud)

Tim*_*ker 5

是的,我会说正则表达式是这个的理想工具:

def numbers(s):
    return int(re.search(r"\d+", s).group(0))
Run Code Online (Sandbox Code Playgroud)

对于具有多个数字的字符串:

def numbers(s):
    return [int(match) for match in re.findall(r"\d+", s)]
Run Code Online (Sandbox Code Playgroud)

甚至

def numbers(s):
    return (int(match) for match in re.finditer(r"\d+", s))
Run Code Online (Sandbox Code Playgroud)