Страницы

Поиск по вопросам

вторник, 14 мая 2019 г.

Замена макросов python

Добрый день! В субботний день голова думает не на нужном уровне :) Не могу разобраться - как в тексте подменить макрос на результат выполненного кода, к примеру, имеется текст с макросами: text = 'Date: [RAND-1-31]-[RAND-1-12]-20[RAND-11-12], [RAND-1-12]:[RAND-1-5][RAND-1-9] PM' Каким образом можно пройтись по всем этим макросам и заменить их результатом выполнения функции randint(a,b)? Думаю решение где-то на поверхности, но ко мне оно не приходит :) Заранее благодарен!


Ответ

re.sub и заменять на результат работы функции, которая на [RAND-1-31] выдаёт результат str(randint(1, 31)) def f(m): return str(random.randint(int(m.group(1)), int(m.group(2)))) t = re.sub(r'\[RAND-(\d+)-(\d+)\]', fun, text) или t = re.sub(r'\[RAND-(\d+)-(\d+)\]', lambda m: str(random.randint(int(m.group(1)), int(m.group(2)))), text) UPD Исправлена ошибка в первой группе: (\d+). Было (\d)+ (см. комментарий @xenoll)

Комментариев нет:

Отправить комментарий