Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 24, 2009 18:05:46

Cover Story
От:
Зарегистрирован: 2008-08-26
Сообщения: 192
Репутация: +  0  -
Профиль   Отправить e-mail  

Регулярные выражения и кодировка

Всем доброго!
Пытаюсь разобраться с регулярными выражениями.
Пишу код:

# -*- coding: utf-8 -*-
import re
pattern = ur'href="(.*?)">(.*?)</a>'
number_re = re.compile(pattern)
hhh = u'<a href="www.ya.ru">яндекс</a>'
s = number_re.findall(hhh)
print unicode(s)
Результат:
[(u'www.ya.ru', u'\u044f\u043d\u0434\u0435\u043a\u0441')]
Как побороть проблему с кодировкой?

И второй вопрос: Как сделать более универсальную регулярку чтобыможно было задавать любые урлы например как этот:
<a href="www.ya.ru onClick=win(400,350) target=window">яндекс</a>



Python 2.7.3
Pyside 1.1.2

Офлайн

#2 Ноя. 24, 2009 18:42:08

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Регулярные выражения и кодировка

1. Выводите строку, а не list и проблемы с кодировкой не будет.
2. Брать то что идёт после <a href=" и до первого пробела, ну и от > до <

Отредактировано (Ноя. 24, 2009 18:42:55)

Офлайн

#3 Ноя. 24, 2009 19:16:12

Cover Story
От:
Зарегистрирован: 2008-08-26
Сообщения: 192
Репутация: +  0  -
Профиль   Отправить e-mail  

Регулярные выражения и кодировка

Не могли бы Вы подсказать как вывести строку в данном случае?
Я просто не понимаю.



Python 2.7.3
Pyside 1.1.2

Офлайн

#4 Ноя. 24, 2009 20:08:31

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Регулярные выражения и кодировка

print s[0][1]
.....
pattern = ur'href="(.*?)[\ "].*?>(.*?)</a>'

Отредактировано (Ноя. 24, 2009 20:10:32)

Офлайн

#5 Ноя. 26, 2009 21:19:21

Cover Story
От:
Зарегистрирован: 2008-08-26
Сообщения: 192
Репутация: +  0  -
Профиль   Отправить e-mail  

Регулярные выражения и кодировка

У меня получилось побороть проблему с кодировкой таким способом:

# -*- coding: utf-8 -*-
import re
pattern = ur'href="(.*?)[\ "].*?>(.*?)</a>'
number_re = re.compile(pattern)
hhh = '<a href="www.ya.ru">яндекс</a>'
s = number_re.findall(hhh)
for k in s:
for kk in k:
print kk.decode('utf-8')
А есть что попроще?



Python 2.7.3
Pyside 1.1.2

Офлайн

#6 Ноя. 26, 2009 22:16:41

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Регулярные выражения и кодировка

Cover Story
У меня получилось побороть проблему с кодировкой таким способом:
А была какая-то проблема?



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version