1

我知道我可以使用正则表达式在 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
4

2 回答 2

7

是的,我会说正则表达式是解决此问题的理想工具:

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))
于 2012-12-14T21:22:47.530 回答
0

只需过滤掉生成器表达式中的非数字:

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]
于 2012-12-14T21:26:56.660 回答