Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 19, 2012 14:38:03

spec
Зарегистрирован: 2012-09-29
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Переменная в регулярке

Вопрос нубский, но в нете че-то не нашел на него ответ.

string = '0 1 2 3 4 5 6 7 8 9 10 11 12'
var = 12
m = re.findall(r'\d+',string)
Тут все понятно, получим список с “печеньками”.
>>> m
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12']
А как в шаблон ‘\d+’ вписать var?

Офлайн

#2 Окт. 19, 2012 15:16:19

spec
Зарегистрирован: 2012-09-29
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Переменная в регулярке

Через compile, разобрался.

Офлайн

#3 Окт. 19, 2012 23:42:14

@cckyi_boxxx
От:
Зарегистрирован: 2012-01-13
Сообщения: 181
Репутация: +  14  -
Профиль   Отправить e-mail  

Переменная в регулярке

Через compile, разобрался.
как через компиле , когда мне приходилось динамически запиливать регулярки я делал так :

1) из того текста откуда брались динамические части регулярки вытягивал их
2) re.findall(eval(“r'some flood(' + хрень из первого пункта + ‘)some flood’” , string)

основной проблемой было то что когда я пытался запилить так :
regex = r'some flood(' + хрень из первого пункта + ')some flood'
а потом переменную regex передать финдаллу то он ничего не находил , потом я потестировал это дело и пришел к выводу что во втором случае по непонятным мне причинам переменная создавалась такой какбуд-то не юзался raw string

короче мне хотелось-бы увидеть код как ты решил эту проблему



Отредактировано @cckyi_boxxx (Окт. 19, 2012 23:58:32)

Офлайн

#4 Окт. 19, 2012 23:48:11

spec
Зарегистрирован: 2012-09-29
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Переменная в регулярке

Офлайн

#5 Окт. 20, 2012 00:01:10

@cckyi_boxxx
От:
Зарегистрирован: 2012-01-13
Сообщения: 181
Репутация: +  14  -
Профиль   Отправить e-mail  

Переменная в регулярке

интересный способ , хоть там raw и не юзаеться но такое может проканать и с ним



Офлайн

#6 Окт. 20, 2012 00:45:26

GaiveR
От:
Зарегистрирован: 2011-08-13
Сообщения: 122
Репутация: +  16  -
Профиль   Отправить e-mail  

Переменная в регулярке

потом я потестировал это дело и пришел к выводу что во втором случае по непонятным мне причинам переменная создавалась такой какбуд-то не юзался raw string

regex = r'some flood(' + хрень из первого пункта + ')some flood'

в данном случае, например, в виде сырой строки у тебя записана только часть:
r'some flood('
всё остальное - как обычные строки.



Офлайн

#7 Окт. 20, 2012 01:57:20

@cckyi_boxxx
От:
Зарегистрирован: 2012-01-13
Сообщения: 181
Репутация: +  14  -
Профиль   Отправить e-mail  

Переменная в регулярке

точняк во я тупанул , а так если переменную в сырую строку добавлять через %s то по идее все будет сырой строкой , или я не прав ?



Офлайн

#8 Окт. 20, 2012 02:51:07

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

Переменная в регулярке

Сырая строка - это литерал, выражение, которое определяет строку. И сырая строка, и сухая - экземпляр класса str (или unicode).

Офлайн

#9 Окт. 21, 2012 09:06:58

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Переменная в регулярке

>>> pat = 'abc {0} def {1}'.format(1, 2)
>>> pat
'abc 1 def 2'
>>>



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version