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

Я пытаюсь добавить разделитель тысяч (например, ",") к большим числам в заданной строке, обусловленной следующим словом. Это регулярное выражение работает для любого числа:

re.sub(r'\d{1,3}(?=(\d{3})+(?!\d))', r"\g<0>,", my_string)

Но я хочу применять его только для определенных случаев, это нормально (евро / доллары):

re.sub(r'\d{1,3}(?=(\d{3})+(?!\d))', r"\g<0>,", "1000 euros")
> "1,000 euros"

Это неt:

re.sub(r'\d{1,3}(?=(\d{3})+(?!\d))', r"\g<0>,", "n° 1234 f")
> "n° 1,234 f"

Как правильно добавить условие? Спасибо

1 Ответ

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

Вы можете включить группу слов, к которой вы хотите применить изменение, в запрос, например:

\d{1,3}(?=(\d{3})+\s*(euros|dollars))

В языке Python:

print(re.sub(r'\d{1,3}(?=(\d{3})+\s*(euros|dollars))', r"\g<0>,", "1000 euros"))
print(re.sub(r'\d{1,3}(?=(\d{3})+\s*(euros|dollars))', r"\g<0>,", "n° 1234 f"))
print(re.sub(r'\d{1,3}(?=(\d{3})+\s*(euros|dollars))', r"\g<0>,", "1234567 dollars"))

Вывод:

1,000 euros
n° 1234 f
1,234,567 dollars
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...