我想要 python [duplicate] 中字符串中给出的数字总和

I want the sum of numbers given in a string in python [duplicate]

提问人:Deepak Reddy 提问时间:4/28/2023 更新时间:4/28/2023 访问量:50

问:

**String1='Deepak25 is awesome5'**#I 想要数字的总和,即 30 作为输出。 总和=30

String2='我今年 25 岁零 10 个月'总和 = 35'

对于 String2,我使用了字符串拆分方法并计算了 Sum。但是对于 String1,我无法做到这一点。 有没有办法计算总和。

Python 字符串 拆分 逻辑 切片

评论


答:

3赞 tstx 4/28/2023 #1

您可以使用正则表达式来查找字符串中的所有整数。
https://www.pythontutorial.net/python-regex/python-regex-findall/ 获得列表
后,将其转换为整数,然后将所有元素
相加 https://www.geeksforgeeks.org/python-converting-all-strings-in-list-to-integers/

import re
String1='Deepak25 is awesome5'
String2='I am 25 years and 10 months old'
 #create pattern, only number, any length
p = re.compile('[0-9]+')
 #get the list of all match
l = re.findall(p, String2)
 #cast to int and sum the list
result = sum([int(x) for x in l])

print(result)
 # output : 30 for String 1 | 35 for String2

当然,你必须用它创建一个函数,以一种干净的方式实现它:)
请注意,这不适用于浮点数,您必须修改正则表达式模式

评论

1赞 B Remmelzwaal 4/28/2023
eval而不是?为什么使用“eval”是一种不好的做法?int
1赞 tstx 4/28/2023
当然,这不会带来任何东西,并且会更加混乱,我会编辑答案。