Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 19, 2014 13:17:14

vanvanov
Зарегистрирован: 2013-03-31
Сообщения: 252
Репутация: +  4  -
Профиль   Отправить e-mail  

Загрузить регулярные выражения из файла?

Есть код наподобие этого.

#!/usr/bin/python3
import re
nbspace=' '
debug_mes=''
default_line_break='\n'
regexp=315
line=' on page 13 indicates'
my_expr=' on( page)\s(\d+ indicates)'
match=re.search(my_expr,line)
while match:
	replace_what=match.group(0)
	replace_with=match.group(1)+nbspace+match.group(2)
	line=line.replace(replace_what,replace_with)
	debug_mes=debug_mes+'regexp '+str(regexp)+':'+replace_with+default_line_break
	match=re.search(my_expr,line)
print(debug_mes)
Таких случаев много, и различаются они обычно в replace_with. Мне хочется выгрузить my_expr и replace_with в отдельный файл, чтобы не загромождать скрипт и не обновлять каждый раз скомпилированное из него приложение. Вот только я не могу понять, как правильно в данном случае можно сконвертировать строку в regex.

Офлайн

#2 Июнь 19, 2014 21:03:04

4kpt_II
От: Харьков
Зарегистрирован: 2013-10-24
Сообщения: 999
Репутация: +  58  -
Профиль   Отправить e-mail  

Загрузить регулярные выражения из файла?

Вы хотите иметь возможность редактировать регеспы в текстовом режиме?

Офлайн

#3 Июнь 19, 2014 23:42:55

vanvanov
Зарегистрирован: 2013-03-31
Сообщения: 252
Репутация: +  4  -
Профиль   Отправить e-mail  

Загрузить регулярные выражения из файла?

4kpt_II
Вы хотите иметь возможность редактировать регеспы в текстовом режиме?
В каком-то смысле, да. У меня одна строка, содержащая регулярные выражения, заменяется другой. Я хочу вынести вне скрипта образец (pattern) контекста для замены и то, чем я хочу заменить этот образец. Ситуация усложняется тем, что замена частично состоит из групп образца. Другими словами, надо правильно сконвертировать строку в регулярное выражение. Есть re.compile, однако ведь replace работает только со строками. Грубо говоря, мне нужно примерно такое:

my_expr=' on( page)\s(\d+ indicates)'
replace_with='re.search(my_expr,line).group(1)+nbspace+re.search(my_expr,line).group(2)'
=>
line=line.replace(my_expr,replace_with)

Отредактировано vanvanov (Июнь 19, 2014 23:52:30)

Офлайн

#4 Июнь 20, 2014 00:17:15

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

Загрузить регулярные выражения из файла?

>>> import re
>>> 
>>> pat = r'(.+)x(.+)'
>>> rep = r'[\2\2][\1\1]'
>>> 
>>> s = 'abcxdef'
>>> 
>>> re.sub(pat, rep, s)
'[defdef][abcabc]'
>>>



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version