Python Разделительная строка с помощью регулярных выражений - PullRequest
2 голосов
/ 29 октября 2019

Это моя строка:

st = "$10,8001st$6,480,2nd$2,160,3rd$1,188,4th$648,5th$324"

Мой ожидаемый результат:

$10,800 1st $6,480, 2nd $2,160, 3rd $1,188, 4th $648, 5th $324

Я пишу этот код:

result = " ".join(re.split("([\$\d\,]+)\d[a-zA-z]{2}", st))

Но вывод не удовлетворяет меняПотому что он удаляет какую-то часть.

Кто-нибудь может мне помочь в этом случае?

1 Ответ

0 голосов
/ 29 октября 2019

Вы можете использовать

text = "$10,8001st$6,480,2nd$2,160,3rd$1,188,4th$648,5th$324"
print(" ".join(re.split(r'(\$\d{1,3}(?:,\d{3})*,?)', text)).strip())
# => $10,800 1st $6,480, 2nd $2,160, 3rd $1,188, 4th $648, 5th $324

См. Демо Python и демо regex . Шаблон представляет собой одну группу захвата (так что re.split может также выводить захваченные строки), которая соответствует

  • \$ - $ char
  • \d{1,3}- одна, две или три цифры
  • (?:,\d{3})* - 0 или более вхождений ,, за которыми следуют три цифры
  • ,? - необязательный ,.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...