从字符串中提取数字

3

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

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


你需要为每个数字都定义一个显式变量,还是只想求和所有整数?使用数字数组可以吗(您可以在其上进行缩减)?如果可以的话,Python中的所有字符串都有一个split方法,您可以传递一个字符“,”,它将返回由逗号分隔的值的数组。 - Erik Hinton
我指的是整数。无论如何,我得到了想要的答案,谢谢。 - jaganath
3个回答

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

4

如果字符串包含其他分隔符或特殊字符,那么之前的方法可能就不再适用了。我建议采用另一种方法:

import re

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

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

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

如果您希望将字符串值转换为整数:

result_int = map(int, result)

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接