从字符串中提取数字

3 投票
3 回答
9491 浏览
提问于 2025-04-17 04:51

如何从一个字符串中提取所有数字?

比如说,有一个字符串 "66,55,66,57"。我想把每个数字提取出来,放到不同的变量里,然后进行整数运算。

3 个回答

0

试试这个:

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

这样会给你一个整数的列表,保存在 ints 里。

4

这个提议之前的方法不太适合,如果字符串里有其他分隔符或者特殊字符的话。我建议使用另一种方法:

import re

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

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

结果是: ['123', '421', '57', '241']

如果你想的话,可以把字符串的值转换成整数:

result_int = map(int, result)
9

你可以用一种叫做列表推导式的方法,配合 str.split 来把字符串拆分开,并把它们转换成整数:

>>> string  = "66,55,66,57"
>>> numbers = [int(x) for x in string.split(",")]

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

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

>>> sum(numbers)
244

撰写回答