python - 删除数字和总和python之间的空格的最佳方法?
问题描述
我是一名学习者,目前正在处理一项任务,几乎完成了,但我对如何完成感到困惑。我有一个 <class 'str'> 看起来像:
我需要删除 2 位数字之间的空格,这样我就可以轻松地将整数相加。下面是确切的字符串:
9 7 9 7 9 0 9 0 8 8 8 7 8 7 8 0
7 9 7 9 7 8 7 6 7 6 7 2 7 2 6 6 6 6 6 5 6 5 6 4 6
1 6 1 5 9 5 8 5 7 5 7 5 4 5 1 4 9 4 7 4 0 3 8 3 7
3 6 3 6 3 2 2 5 2 4 2 2 2 1 1 9 1 8 1 8 1 4 1 2
1 2 9 7 3 2
我在这里用正则表达式检查了类似的答案,我尝试的每个解决方案似乎只是删除所有空格(留下一长串数字)或将它们分成单个数字。
解决这个问题的最佳方法是什么?
解决方案
您可以使用正则表达式来查找一个'\d'
可选地后跟一个空格然后是另一个 digit 的数字'(?: \d)?'
。然后在列表理解中删除中间空格(如果有的话)
>>> [i.replace(' ', '') for i in re.findall(r'(\d(?: \d)?)', s)]
['97', '97', '90', '90', '88', '87', '87', '80', '79', '79', '78', '76', '76', '72', '72', '66', '66', '65', '65', '64', '6', '1', '61', '59', '58', '57', '57', '54', '51', '49', '47', '40', '38', '37', '36', '36', '32', '25', '24', '22', '21', '19', '18', '18', '14', '12', '12', '9', '7', '3', '2']
将这些转换为int
类型
>>> [int(i.replace(' ', '')) for i in re.findall(r'(\d(?: \d)?)', s)]
[97, 97, 90, 90, 88, 87, 87, 80, 79, 79, 78, 76, 76, 72, 72, 66, 66, 65, 65, 64, 6, 1, 61, 59, 58, 57, 57, 54, 51, 49, 47, 40, 38, 37, 36, 36, 32, 25, 24, 22, 21, 19, 18, 18, 14, 12, 12, 9, 7, 3, 2]
并总结它们
>>> sum(int(i.replace(' ', '')) for i in re.findall(r'(\d(?: \d)?)', s))
2499
推荐阅读
- python - 无法使用带有 python 的 spark 和 kafka 插入 eslaticsearch
- python - 如何将参数传递给 Python 中的回调函数?
- javascript - 高级轮播不可见,下拉按钮不见了
- node.js - npm start 失败并显示 events.js:174 throw err; 在 Ubuntu 18.04 上
- mysql - UNION SELECT 上的 MySQL COUNT 整数值并显示为值
- wpf - 在 WindowLoaded 中设置 WindowStyle 时如何恢复窗口的默认显示/关闭动画?
- c# - 使用反射将属性设置为其类型的代理对象
- mysql - 更新专用于特定订单的列
- php - 单击电子邮件中的激活链接后的 USER 更新
- json - Json 模式验证器,如何验证键是否不是静态的