提取字符串中的数字[重复]

Posted

技术标签:

【中文标题】提取字符串中的数字[重复]【英文标题】:extracting numbers in a string [duplicate] 【发布时间】:2011-12-13 15:00:39 【问题描述】:

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

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

【问题讨论】:

您是否需要为每个数字指定一个显式变量,还是只想对每个整数求和?一组数字可以吗(你可以减少它)?如果是这样,python 对所有传递字符“,”的字符串都有一个 split 方法,它将返回一个由逗号分隔的值的数组。 按数字我的意思是整数..我得到想要的答案的任何方式,谢谢你 【参考方案1】:

试试这个:

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

会给你一个ints中的整数列表。

【讨论】:

【参考方案2】:

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

import re

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

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

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

如果您愿意,可以将字符串值转换为 int:

result_int = map(int, result)

【讨论】:

【参考方案3】:

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

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

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

然后,您可以使用该列表做任何您想做的事情。例如:

>>> sum(numbers)
244

【讨论】:

以上是关于提取字符串中的数字[重复]的主要内容,如果未能解决你的问题,请参考以下文章

从字符串中提取数字到列表中[重复]

只读字符串中的数字[重复]

excel中如何提取两个字符串中间的内容(字符串有重复)?

从C#中的字符串中提取十进制数[重复]

从字符串中提取数字[重复]

从没有任何空格的字符串中提取数字[重复]