我知道我可以使用正则表达式在 python 中过滤文本中的数字,但这是最好的方法吗?
假设我有一个字符串列表:
a="gamma function: 78"
b="factorial value: 120"
c="random number: 33"
是否有一个很好的功能可以执行以下操作?
for string in [a,b,c]:
return numbers(string)
78
120
33
是的,我会说正则表达式是解决此问题的理想工具:
def numbers(s):
return int(re.search(r"\d+", s).group(0))
对于具有多个数字的字符串:
def numbers(s):
return [int(match) for match in re.findall(r"\d+", s)]
甚至
def numbers(s):
return (int(match) for match in re.finditer(r"\d+", s))
只需过滤掉生成器表达式中的非数字:
a="gamma function: 78"
b="factorial value: 120"
c="random number: 33"
numbers = []
for string in [a,b,c,]:
numbers.append( int("".join(char for char in string if char.isdigit())))
将其粘贴到控制台上,我得到:
>>> numbers
[78, 120, 33]