Лучший способ убрать пробелы между цифрами и суммой python ? - PullRequest
0 голосов
/ 06 мая 2020

Я учусь и в настоящее время работаю над задачей и почти закончил, но я застрял на том, как завершить sh вверх. У меня есть , который выглядит так:

Output on my terminal. Notice the spaces...

Мне нужно удалить пробелы между 2-di git числа, поэтому я легко могу суммировать целые числа. Ниже приведена точная строка:

                                                          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

Я проверил аналогичные ответы здесь с помощью Regex, и каждое решение, которое я пробовал, похоже, либо просто удаляет все пробелы (оставляя одну длинную строку цифр), либо разделяет их на один цифры.

Как лучше всего решить эту проблему?

1 Ответ

2 голосов
/ 06 мая 2020

Вы можете использовать регулярное выражение для поиска di git '\d', за которым необязательно следует один пробел, а затем еще один di git '(?: \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
...