Страницы

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

вторник, 25 февраля 2020 г.

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

#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)? Думаю решение где-то на поверхности, но ко мне оно не приходит :)
Заранее благодарен!    


Ответы

Ответ 1



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)

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

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