2015-06-22 3 views
2

Я хочу:Установить атрибут без значения с LXML XML

<div data-a> 

Но LXML API, кажется, дает мне только это:

<div data-a=''> 

Как получить значение меньше атрибутов?


Его раздражает, что пустые значения и нулевые значения представлены LXML в виде пустой строки.

Установка Значение не помогает.

In [19]: from lxml.html import fromstring, tostring 

In [20]: b = fromstring('<body class="meow" data-a="haha" data-b data-x="">text-fef27e87389e466fb99b5421629323f6</body>') 

In [21]: b.attrib 
Out[21]: {'data-a': 'haha', 'data-x': '', 'data-b': '', 'class': 'meow'} 

In [22]: b = fromstring('<body class="meow" data-a="haha" data-b data-x="">text-fef27e87389e466fb99b5421629323f6</body>') 

In [23]: b.attrib 
Out[23]: {'data-a': 'haha', 'data-x': '', 'data-b': '', 'class': 'meow'} 

In [24]: b.attrib['data-y'] = None 
--------------------------------------------------------------------------- 
TypeError         Traceback (most recent call last) 
<ipython-input-24-1f55133e3dc4> in <module>() 
----> 1 b.attrib['data-y'] = None 

/usr/lib/python2.7/dist-packages/lxml/etree.so in lxml.etree._Attrib.__setitem__ (src/lxml/lxml.etree.c:58775)() 

/usr/lib/python2.7/dist-packages/lxml/etree.so in lxml.etree._setAttributeValue (src/lxml/lxml.etree.c:19025)() 

/usr/lib/python2.7/dist-packages/lxml/etree.so in lxml.etree._utf8 (src/lxml/lxml.etree.c:26460)() 

TypeError: Argument must be bytes or unicode, got 'NoneType' 


tag.attrib['data-a'] = None 
TypeError: Argument must be bytes or unicode, got 'NoneType' 
+0

Просьба показать демонстрационный минимальный код. [ask] – boardrider

ответ

2

IMHO, lxml демонстрирует ожидаемое поведение. Атрибут без значения делает не хорошо сформированный XML, и достойный XML-парсер не производит, не хорошо сформированные XML:

+0

Так что плохая новость - мне нужна альтернатива LXML? – aitchnyu

+0

Возможно, вы можете присвоить уникальное значение атрибуту, который вы можете легко найти и заменить с помощью простых строковых операций позже (продолжайте использовать lxml, за исключением создания атрибута без значения) – har07

Смежные вопросы