Форум сайта python.su
0
Добрый день!
Есть задача - извлечь при помощи регулярного выражения некоторые строки, и заменить их на значения из словаря (строка это ключ в словаре). Подскажите пожалуйста, как будет правильнее это сделать?
Я вижу два варианта:
1. использовать в re.sub() собственную функцию для замены значения, которая будет просто возвращать нужно значение из словаря
2. использовать re.findall(), найти все строки и потом уже при помощи replace() заменять значения в цикле
Сейчас использую первый вариант и вроде бы все устраивает, просто интересно правильная эта реализация или можно как-нибудь по-элегантнее это сделать?
Спасибо!
Офлайн
0
Чтобы можно было сказать что-то конкретное нужно выложить уже написанный код, тем более если он рабочий. А так не ясно, возможно регекспы в данной задаче и не нужны вовсе.
Как говорил кто-то из участников форума: “мой хрустальный шар сегодня сломался …”
:)
Офлайн
32
Офлайн
0
YurietcВот такой код:
Чтобы можно было сказать что-то конкретное нужно выложить уже написанный код, тем более если он рабочий.
import re
def replace_func(match_obj):
if match_obj.group(1) in variables:
return str(variables[match_obj.group(1)])
variables = {"variable": 256}
text = 'bla bla blahhh $variable blahhh blaaahhhhh'
result = re.sub(r'\$([\w_-]+)', replace_func, text)
Отредактировано (Авг. 27, 2011 19:00:54)
Офлайн
7
Код не нужен, конечно. Тем более вы все четко и ясно написали. Как вы сделали - так и надо. Если нужен анализ, то тогда конечно нужен findall.
Офлайн
0
шаблонизатор пишешь? :)
Офлайн
0
Всем спасибо за ответы!
dimabestДа, только очень упрощенное - я новичок в питоне, как раз поможет лучше разобраться)
шаблонизатор пишешь?
Офлайн