Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 3, 2011 20:49:59

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

поиск без учета регистра

re.search(r'транспорт', 'Транспорт', re.I)
Подскажите почему не ищет?



Офлайн

#2 Апрель 3, 2011 20:56:36

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

поиск без учета регистра

на re.I не влияет current locale — то есть только ascii получаются case insensitive.
Приведите строки в unicode и используйте re.I | re.U — так будет лучше всего.



Офлайн

#3 Апрель 3, 2011 22:12:13

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

поиск без учета регистра

>>> import re
>>> re.search(ur'транспорт', u'Транспорт', re.I | re.U)
<_sre.SRE_Match object at 0x19a3440>
>>>



Офлайн

#4 Апрель 3, 2011 22:17:11

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

поиск без учета регистра

Странно. Если в ipython запускаю этот код, то не ищет.
спасибо за объяснение.



Офлайн

#5 Апрель 5, 2011 22:30:41

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

поиск без учета регистра

Все-таки не понимаю почему этот код не работает в винде

>>> root = 'Транспорт'
>>> re.search(ur'Транспорт', root)
<_sre.SRE_Match object at 0x00A6A7C8>
>>> re.search(ur'транспорт', unicode(root, 'cp1251'), re.I | re.U)
>>>
>>>



Офлайн

#6 Апрель 5, 2011 23:10:51

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

поиск без учета регистра

Потому что кодировка sys.stdin.encoding == ‘cp866’, как я предполагаю.



Офлайн

#7 Апрель 6, 2011 08:26:01

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

поиск без учета регистра

Нет, запускаю в Idle.
Может дело в этом:

>>> sys.stdin.encoding
'cp1251'
>>> unicode('Транспорт', 'cp1251')
u'\u0422\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442'
>>> u'Транспорт'
u'\xd2\xf0\xe0\xed\xf1\xef\xee\xf0\xf2'
>>>



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version