Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 14, 2010 20:26:51

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

re заменяет непонятными символами

Здравствуйте!

у меня такая ситуация, я пишу:

import re
f = open('C:\Python26\example.txt')
text = f.read()
p = re.compile('(\s)+([\.,:!?;])')
new = p.sub('\2', text)
а в итоге вместо знаков препинания в переменную new попадают непонятные символы

если ставлю так:
 
p = re.compile('\s+([\.,:!?;])')
new = p.sub('\1', text)
то вообще все знаки препинания стераются.

В чем моя ошибка, подскажите пожалуйста?



Офлайн

#2 Янв. 14, 2010 21:54:36

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

re заменяет непонятными символами

Попробуйте так:

new = p.sub(r'\2', text)



Офлайн

#3 Янв. 15, 2010 12:07:26

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

re заменяет непонятными символами

Ed, спасибо. так сработало. А вы не могли бы объяснить, что означает r ? я в документации видел такое в примерах, а описания не могу найти, вроде это не модификатор…



Офлайн

#4 Янв. 15, 2010 12:25:58

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

re заменяет непонятными символами

Читайте здесь: http://docs.python.org/reference/lexical_analysis.html#literals
Вкратце это означает ‘raw string’, в ней питон ничего трогать не будет. А если без r, то он будет стараться обработать escape последовательности \n \r \t \цифра и т.д.



Офлайн

#5 Янв. 15, 2010 12:30:42

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

re заменяет непонятными символами

Ed, спасибо. теперь понял.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version