Как я могу идентифицировать числа с разделителем пространства для тысяч в строке с Python?

Я работаю с текстом, который использует пробелы в качестве разделителей тысяч, например, 400 или 40 000 или 40 000 000 или 4 000 000 000. Мне нужно определить число в строке. После определения существует много вариантов переформатировать номер. Я новичок в регулярном выражении. Это не работает:

import re line = '40) He had 120 hours to increase from 40 000 units to 20 000 000.' regex = re.compile("(\d+ *\d+)") re.findall(regex, line) ['40', '120', '40 000', '20 000', '000'] 

Это сделает следующее:

 regex = re.compile(r"(\d+(?:\s+\d+)*)") 

В нем используется не захватывающая группа (?:) которая соответствует одному или нескольким пробелам ( \s+ ), за которыми следует хотя бы одна цифра ( \d+ ). Вся группа без захвата может отображаться ноль или более раз ( * ).

Стоит отметить, что обычно полезно использовать необработанные строки ( r"" или r'' ) для регулярных выражений Python.

Наконец, я бы, вероятно, подтянул регулярное выражение так:

 regex = re.compile(r"(\d+(?:\s+\d{3})*)") 

Для этого требуется, чтобы каждая группа цифр, кроме первой, составляла ровно три цифры.