Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > Python > Регулярка не работает


Автор: diel 03.11.15, 05:11
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    html = urllib2.urlopen("http://localhost/index.php?price=" + str(id))
    match = re.search("<title>(.*?)<\/title>", str(html).decode("utf8"), re.UNICODE)
    print match


Выдает None, хотя title есть, но там могут содержаться кириллические символы.
Скажите пожалуйста, что я делаю не так?

Добавлено
Ой, прошу прощения, забыл прочитать ответ

<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    connect = urllib2.urlopen("http://localhost/index.php?price=" + str(id))
    html = connect.read().decode("utf8")
    match = re.search("<title>(.*?)</title>", str(html), re.UNICODE)
    print match


Теперь возвращает ошибку UnicodeDecodeError: 'utf8' codec can't decode byte 0xe2 in position 1032: invalid continuation byte
Хотя я указал регулярному выражению, что работаем в юникоде и сам html декодирую

Добавлено
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    html = urllib2.urlopen("http://localhost/index.php?price=" + str(id)).read()
    match = re.search(u"<title>(.*)</title>", str(html), re.I | re.U)
    print match.group(1)


Вот так работает, но кириллица режется(

Добавлено
Начал писать в файл, оказалось регулярное выражение работает, просто в консоли putty не выводится

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)