Форум сайта python.su
0
re.search(r'транспорт', 'Транспорт', re.I)
Офлайн
14
на re.I не влияет current locale — то есть только ascii получаются case insensitive.
Приведите строки в unicode и используйте re.I | re.U — так будет лучше всего.
Офлайн
14
>>> import re
>>> re.search(ur'транспорт', u'Транспорт', re.I | re.U)
<_sre.SRE_Match object at 0x19a3440>
>>>
Офлайн
0
Странно. Если в ipython запускаю этот код, то не ищет.
спасибо за объяснение.
Офлайн
0
Все-таки не понимаю почему этот код не работает в винде
>>> root = 'Транспорт'
>>> re.search(ur'Транспорт', root)
<_sre.SRE_Match object at 0x00A6A7C8>
>>> re.search(ur'транспорт', unicode(root, 'cp1251'), re.I | re.U)
>>>
>>>
Офлайн
14
Потому что кодировка sys.stdin.encoding == ‘cp866’, как я предполагаю.
Офлайн
0
Нет, запускаю в 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'
>>>
Офлайн