我知道我可以使用正则表达式在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
答案 0 :(得分:5)
是的,我会说正则表达式是理想的工具:
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))
答案 1 :(得分:0)
只需过滤掉generator-expression中的非数字:
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]