заменить подстроку новой, вычисленной из старой с регулярным выражением python - PullRequest
0 голосов
/ 01 февраля 2019

Можно ли использовать регулярное выражение Python для замены подстроки новой подстрокой, "вычисленной" с использованием исходной подстроки?

Позвольте мне привести пример:

Предположим, у меня есть подстрокаuserX40, я хочу получить подстроку 40, привести к int, умножить на 2 и вернуть обратно в исходную строку: итоговый результат будет user80.

Iможет сделать это в разных местах, таких как:

import re
in_str = "userX40"
original_num = int(re.search("\d+", in_str).group())
out_str = re.search("(.*)[^\d]", lll).group() + str(original_num*2)

Есть ли способ сделать это, используя re.sub в одной команде?

1 Ответ

0 голосов
/ 01 февраля 2019

Да, это возможно с re.sub.Предоставить вызываемый объект, который преобразует объект соответствия в целое число, умножает его и преобразует обратно в строку.

>>> s = "userX40"
>>> re.sub(r"\d+", lambda x: str(2*int(x.group())), s)
'userX80'
...