Форум сайта python.su
0
Добрый вечер.
Помогите решить проблему с Unicode в регулярном выражении.
Задача такая, найти вхождение в строке и удалить его, регистр не должен учитываться.
Что я делаю не так ?
ipdb> regexp = re.compile(ur"Хслово", re.IGNORECASE | re.UNICODE) ipdb> str1 = "Хслово тут есть" ipdb> str2 = "хслОво 2" ipdb> regexp.findall(str1) ['\xd0\xa5\xd1\x81\xd0\xbb\xd0\xbe\xd0\xb2\xd0\xbe'] ipdb> regexp.findall(str2) [] ipdb>
Офлайн
857
>>> import re >>> >>> regexp = re.compile(ur"Хслово", re.IGNORECASE | re.UNICODE) >>> >>> str1 = u"Хслово тут есть" >>> str2 = u"хслОво 2" >>> regexp.findall(str1) [u'\u0425\u0441\u043b\u043e\u0432\u043e'] >>> regexp.findall(str2) [u'\u0445\u0441\u043b\u041e\u0432\u043e'] >>>
Офлайн
0
Спасибо за ответ.
Подскажите из-за чего может возникать такая проблема, если дебажу в коде то регулярка не работает. Если из консоли все работает.
ipdb> regexp = re.compile(ur"Хслово", re.IGNORECASE | re.UNICODE) ipdb> str1 = u"Хслово тут есть" ipdb> str2 = u"хслОво 2" ipdb> type(str1) <type 'unicode'> ipdb> type(str2) <type 'unicode'> ipdb> regexp.findall(str2) [] ipdb> regexp.findall(str1) [u'\xd0\xa5\xd1\x81\xd0\xbb\xd0\xbe\xd0\xb2\xd0\xbe']
Офлайн
857
[guest@localhost py]$ cat repdb.py
#!/usr/bin/env python
# -*- coding: utf-8
import re
regexp = re.compile(ur"Хслово", re.IGNORECASE | re.UNICODE)
str1 = u"Хслово тут есть"
str2 = u"хслОво 2"
lst1 = regexp.findall(str1)
print lst1
lst2 = regexp.findall(str2)
print lst2
[guest@localhost py]$ ipdb repdb.py
> /home/guest/tmp/tests/py/repdb.py(4)<module>()
3
----> 4 import re
5
ipdb> cont
[u'\u0425\u0441\u043b\u043e\u0432\u043e']
[u'\u0445\u0441\u043b\u041e\u0432\u043e']
The program finished and will be restarted
> /home/guest/tmp/tests/py/repdb.py(4)<module>()
3
----> 4 import re
5
ipdb>
[guest@localhost py]$
Офлайн
0
Спасибо, за Ваше время и помощь. Вроде разобрался с проблемой.
Офлайн