如何将数据库输出的字符串数组转为整数并计算各子数组总和
字符串格式数值数组的求和实现方案
核心逻辑
遍历原数组的每个字符串元素,先将字符串解析为整数列表,再对列表内的元素求和,最终将所有求和结果汇总为新数组。
实现代码(Python)
方案1:使用ast模块安全解析(推荐)
ast.literal_eval是Python官方提供的安全解析表达式的方法,仅支持解析Python字面量结构,不会执行任意代码,安全性和兼容性更高:
import ast # 输入的原始数组 array = ['[3, 43, 3, 3, 5]', '[3, 43, 3, 3, 5]', '[3, 43, 3, 3, 5]', '[3, 43, 3, 3, 5]','[3, 43, 3, 3, 5]', '[3, 43, 3, 3, 5]'] # 列表推导式完成解析+求和 array1 = [sum(ast.literal_eval(item)) for item in array] # 输出结果:[57, 57, 57, 57, 57, 57]
方案2:纯字符串处理(无依赖)
不需要导入任何模块,直接通过字符串裁切、拆分完成转换,逻辑更直观:
array = ['[3, 43, 3, 3, 5]', '[3, 43, 3, 3, 5]', '[3, 43, 3, 3, 5]', '[3, 43, 3, 3, 5]','[3, 43, 3, 3, 5]', '[3, 43, 3, 3, 5]'] array1 = [] for str_arr in array: # 移除首尾方括号,按逗号拆分后去除空格、转整数再求和 total = sum(int(num.strip()) for num in str_arr.strip('[]').split(',')) array1.append(total) # 输出结果:[57, 57, 57, 57, 57, 57]
方案说明
- 优先选择方案1,容错性更强,即使字符串数组内存在多余空格、换行符也可以正常解析
- 方案2适合轻量化场景,不需要依赖额外模块,执行效率略高
内容的提问来源于stack exchange,提问作者Alex Tulio
相关产品推荐
相关产品推荐

