拆分字符串并在字符串内添加数字

2024-09-29 22:27:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我该如何将一个字符串拆分,然后再将其中的整数相加,下面的代码可以将单个整数相加,但如果我得到一个类似“a12b34”的字符串,我应该能够像下面的代码那样完成12+34而不是1+2+3+4。我可以用C语言来实现这一点,但我不知道如何在python中100%地做到这一点。在

strTest = str(raw_input("Enter an alphanumeric string: "))
total = 0
for ch in strTest:
    if ch.isdigit() == True:
        total = total + int(ch)
print total

Tags: 字符串代码anforinputstringraw整数
1条回答
网友
1楼 · 发布于 2024-09-29 22:27:16

用户^{}要提取所有数字,请将它们转换为整数,然后将结果求和

>>> import re
>>> s = 'a12b34'
>>> total = sum(map(int,re.findall(r'-?\d+', s))) # -? is to cover negative values
46

只有当你有整数时才有效

编辑:

对于一般情况,您可能也有浮点数,请考虑以下事项:

^{pr2}$

编辑2:

所以发生了什么:

1-import re将导入并加载re模块,该模块用于根据提供的模式提取复杂的字符串格式。更多详细信息here

2-re.findall将使用提供的模式返回s中的所有匹配字符串r'-?\d+\d.>\d+'

3-模式r'-?\d+\d.>\d+分解(可以找到here):

enter image description here

4-现在,re.findall将返回所有匹配项的列表:

>>> s = 'a12b-32c12.0d11.455'
>>> re.findall(r'-?\d+\.?\d+', s)
['12', '-32', '12.0', '11.455']

5-map将把这个列表中的每个元素从字符串转换成float,返回一个生成器:

>>> map(float, re.findall(r'-?\d+\.?\d+', s))
<map object at 0x0000000003873470>
>>> list(map(float, re.findall(r'-?\d+\.?\d+', s)))
[12.0, -32.0, 12.0, -11.455]

6-将map的结果传递给sum将所有元素相加为它们的总和:

>>> sum([12.0, -32.0, 12.0, -11.455])
-19.455

相关问题 更多 >

    热门问题