Уведомления

Группа в Telegram: @pythonsu

#1 Июль 24, 2014 02:21:34

gelius
Зарегистрирован: 2013-03-18
Сообщения: 132
Репутация: +  0  -
Профиль   Отправить e-mail  

регулярки и unicode

Все в utf-8, прописано

coding: utf-8
в самом начале скрипта и все равно:
    urls = urls.xpath('//img/ancestor::a[not(re:match(@href, "(слово)")) ]/@href', namespaces={"re": "http://exslt.org/regular-expressions"})
  File "lxml.etree.pyx", line 1444, in lxml.etree._Element.xpath (src/lxml/lxml.etree.c:41726)
  File "xpath.pxi", line 308, in lxml.etree.XPathElementEvaluator.__call__ (src/lxml/lxml.etree.c:117742)
  File "apihelpers.pxi", line 1366, in lxml.etree._utf8 (src/lxml/lxml.etree.c:22068)
ValueError: All strings must be XML compatible: Unicode or ASCII, no NULL bytes or control characters
Как с этим бороться?

Офлайн

#2 Июль 24, 2014 03:53:09

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

регулярки и unicode

Поставь u перед строкой.



Офлайн

#3 Июль 24, 2014 19:44:17

gelius
Зарегистрирован: 2013-03-18
Сообщения: 132
Репутация: +  0  -
Профиль   Отправить e-mail  

регулярки и unicode

Как я не ставлю u, или проблема с синтаксисом или с кодировкой. Кроме того в финальной версии перечисление:

urls = urls.xpath('//img/ancestor::a[not(re:match(@href, "(слово|slovo)")) ]/@href', namespaces={"re": "http://exslt.org/regular-expressions"})
По тому, что удалось вычитать получается так:
urls = urls.xpath('//img/ancestor::a[not(re:match(@href, u"(слово|slovo)")) ]/@href', namespaces={"re": "http://exslt.org/regular-expressions"})
Но это не работает.

Офлайн

#4 Июль 24, 2014 20:20:14

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

регулярки и unicode

А попробуйте так,

urls = urls.xpath(u'//img/ancestor::a[not(re:match(@href, "(слово|slovo)")) ]/@href', namespaces={"re": u"http://exslt.org/regular-expressions"})
не, ну мало ли куда Вам еще захочется



Отредактировано FishHook (Июль 24, 2014 20:20:51)

Офлайн

#5 Июль 24, 2014 21:26:22

gelius
Зарегистрирован: 2013-03-18
Сообщения: 132
Репутация: +  0  -
Профиль   Отправить e-mail  

регулярки и unicode

FishHook
не, ну мало ли куда Вам еще захочется
К сожалению приходится делать то, что хочется змеюке
Не вариант:
  File "lxml.etree.pyx", line 1444, in lxml.etree._Element.xpath (src/lxml/lxml.etree.c:41726)
  File "xpath.pxi", line 321, in lxml.etree.XPathElementEvaluator.__call__ (src/lxml/lxml.etree.c:117867)
  File "xpath.pxi", line 239, in lxml.etree._XPathEvaluatorBase._handle_result (src/lxml/lxml.etree.c:117044)
  File "xpath.pxi", line 225, in lxml.etree._XPathEvaluatorBase._raise_eval_error (src/lxml/lxml.etree.c:116913)
lxml.etree.XPathEvalError: Invalid expression

Отредактировано gelius (Июль 24, 2014 21:27:16)

Офлайн

#6 Июль 24, 2014 21:39:00

bismigalis
Зарегистрирован: 2010-10-02
Сообщения: 449
Репутация: +  47  -
Профиль   Отправить e-mail  

регулярки и unicode

lxml.etree.XPathEvalError: Invalid expression

это уже не змеюка

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version