?,python,regex,task,digits"/>

首页 > 解决方案 > 删除数字和总和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

我在这里用正则表达式检查了类似的答案,我尝试的每个解决方案似乎只是删除所有空格(留下一长串数字)或将它们分成单个数字。

解决这个问题的最佳方法是什么?

标签: pythonregextaskdigits

解决方案


您可以使用正则表达式来查找一个'\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

推荐阅读