Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 21, 2014 20:03:44

myarik
Зарегистрирован: 2012-11-20
Сообщения: 31
Репутация: +  0  -
Профиль   Отправить e-mail  

Регулярное выражение - Unicode

Добрый вечер.

Помогите решить проблему с 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> 

Офлайн

#2 Окт. 21, 2014 21:34:14

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

Регулярное выражение - Unicode

>>> 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']
>>>



Офлайн

#3 Окт. 22, 2014 10:57:51

myarik
Зарегистрирован: 2012-11-20
Сообщения: 31
Репутация: +  0  -
Профиль   Отправить e-mail  

Регулярное выражение - Unicode

Спасибо за ответ.

Подскажите из-за чего может возникать такая проблема, если дебажу в коде то регулярка не работает. Если из консоли все работает.

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']

Офлайн

#4 Окт. 22, 2014 11:14:42

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

Регулярное выражение - Unicode

[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]$



Офлайн

#5 Окт. 22, 2014 12:22:09

myarik
Зарегистрирован: 2012-11-20
Сообщения: 31
Репутация: +  0  -
Профиль   Отправить e-mail  

Регулярное выражение - Unicode

Спасибо, за Ваше время и помощь. Вроде разобрался с проблемой.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version