关于python:提取字符串中的数字

extracting numbers in a string

本问题已经有最佳答案,请猛点这里访问。

如何提取字符串中的所有数字?

例如,考虑一个字符串"66,55,66,57"。我想将每个数字提取到单独的变量中并执行整数运算。


可以使用列表理解和str.split来分解字符串并将其转换为整数:

1
2
3
4
5
>>> string  ="66,55,66,57"
>>> numbers = [int(x) for x in string.split(",")]

>>> print numbers
[66, 55, 66, 57]

然后你可以用这个列表做你想做的任何事情。例如:

1
2
>>> sum(numbers)
244


如果字符串包含其他分隔符或特殊字符,则建议甚至更早的方法也不适用。我建议另一种方法:

1
2
3
4
5
import re

s = '123 @, 421, 57&as241'

result = re.findall(r'[0-9]+', s)

结果:['123'、'421'、'57'、'241']

如果需要,可以将字符串值转换为int:

1
result_int = map(int, result)


试试这个:

1
2
3
4
5
6
7
8
s ="66,55,66,57"
its = iter(s)
ints = []
while 1:
    try:
        ints.append(int(''.join(takewhile(str.isdigit, its))))
    except ValueError:
        break

将给出ints中整数的列表。