Python中如何计算字符串内正负数字的总和?
计算带正负数字的字符串总和
针对字符串 s = '1+6.3+3-7.6',可以用两种简单方法计算所有正负数字的总和:
方法1:字符串替换分割法
通过替换减号为 +-,让所有数字都带上符号,再按加号分割后求和:
s = '1+6.3+3-7.6' # 将减号替换为 "+-",确保负数带符号 processed_str = s.replace('-', '+-') # 按加号分割成数字字符串列表 num_strings = processed_str.split('+') # 过滤空字符串,转换为float后求和 total = sum(float(num) for num in num_strings if num) print(total) # 输出结果:2.7
方法2:正则表达式提取法
用正则匹配所有带符号的整数/小数,再转换求和:
import re s = '1+6.3+3-7.6' # 匹配规则:可选负号 + 数字 + 可选小数点 + 可选后续数字 nums = re.findall(r'-?\d+\.?\d*', s) total = sum(float(num) for num in nums) print(total) # 输出结果:2.7
为什么你之前的方法行不通?
isdigit()只能识别0-9的字符,负号-和小数点.会被忽略,没法提取带符号的小数;- 直接把整个字符串转成float/int肯定失败,因为字符串里包含运算符,不是纯数字格式;
- 转int还会因为字符串里有小数部分,触发无效字面量错误。
内容的提问来源于stack exchange,提问作者Brady
相关产品推荐
相关产品推荐

