Используйте двухэтапный подход:
- Найти текст перед суммой (до первого
$
char - группа № 1)
и сама сумма (группа № 2).
- Разделите группу # 1 запятыми.
Таким образом, шаблон для использования на первом шаге:
pat1 = re.compile(r'^([^$]+)(\$[\d,]+)')
Тогда используйте шаблон:
m = pat1.search(txt)
и сохраните обе группы захвата:
g1 = m.group(1)
g2 = m.group(2)
Затем найдите части текста перед каждой запятой (шаг 2):
g1.split(',')
получение:
['Coast Repair', '* Norfolk', ' Virginia', ' is awarded a not-to-exceed ']
(текст перед первой запятой (Coast Repair
), вторая запятая (* Norfolk
),
третья запятая (Virginia
) и, наконец, перед суммой
(is awarded a not-to-exceed
)).
Конечно, сумма указана в переменной g2
, поэтому вы можете распечатать ее тоже.