Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 26, 2011 22:36:38

Dmitrys
От:
Зарегистрирован: 2011-08-26
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Регекспы замена значениями из словаря

Добрый день!

Есть задача - извлечь при помощи регулярного выражения некоторые строки, и заменить их на значения из словаря (строка это ключ в словаре). Подскажите пожалуйста, как будет правильнее это сделать?

Я вижу два варианта:
1. использовать в re.sub() собственную функцию для замены значения, которая будет просто возвращать нужно значение из словаря
2. использовать re.findall(), найти все строки и потом уже при помощи replace() заменять значения в цикле

Сейчас использую первый вариант и вроде бы все устраивает, просто интересно правильная эта реализация или можно как-нибудь по-элегантнее это сделать?

Спасибо!



Офлайн

#2 Авг. 27, 2011 00:20:40

Yurietc
От:
Зарегистрирован: 2007-07-18
Сообщения: 112
Репутация: +  0  -
Профиль   Отправить e-mail  

Регекспы замена значениями из словаря

Чтобы можно было сказать что-то конкретное нужно выложить уже написанный код, тем более если он рабочий. А так не ясно, возможно регекспы в данной задаче и не нужны вовсе.
Как говорил кто-то из участников форума: “мой хрустальный шар сегодня сломался …”
:)



Офлайн

#3 Авг. 27, 2011 17:17:53

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Регекспы замена значениями из словаря

Офлайн

#4 Авг. 27, 2011 18:58:07

Dmitrys
От:
Зарегистрирован: 2011-08-26
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Регекспы замена значениями из словаря

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)
Вместо одной строчки переменной text будет относительно небольшой кусок текста (15-20 kb).



Отредактировано (Авг. 27, 2011 19:00:54)

Офлайн

#5 Авг. 27, 2011 19:07:25

Isem
От:
Зарегистрирован: 2010-08-27
Сообщения: 447
Репутация: +  7  -
Профиль   Отправить e-mail  

Регекспы замена значениями из словаря

Код не нужен, конечно. Тем более вы все четко и ясно написали. Как вы сделали - так и надо. Если нужен анализ, то тогда конечно нужен findall.



Офлайн

#6 Авг. 27, 2011 20:21:30

dimabest
От:
Зарегистрирован: 2009-02-12
Сообщения: 253
Репутация: +  0  -
Профиль   Отправить e-mail  

Регекспы замена значениями из словаря

шаблонизатор пишешь? :)



Офлайн

#7 Авг. 28, 2011 23:42:30

Dmitrys
От:
Зарегистрирован: 2011-08-26
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Регекспы замена значениями из словаря

Всем спасибо за ответы!

dimabest
шаблонизатор пишешь?
Да, только очень упрощенное - я новичок в питоне, как раз поможет лучше разобраться)



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version