删除lxml控制字符

时间:2015-12-18 00:56:03

标签: python unicode lxml

我有以下字符串:

s = '''L\'eredit\xc3\xa0 della leggenda del ballo Honey Daniels continua a vivere.\nDopo un periodo passato
in riformatorio Maria cerca di ricostruire la propria vita con nient\'altro che il suo talento per la street dance e un desiderio
bruciante di mettersi alla prova. Maria si getta anima
e corpo nella danza e accetta di allenare un gruppo di giovani inesperti (gli "HD"), per partecipare alla competizione t
elevisiva Dance Battle Zone. Come Honey prima di lei, la giovane riscoprir\xc3\xa0 se stessa e capir\xc3\xa0 cosa 
vuole veramente nella vita attraverso l\'emo
zione della danza. \xc2\xa9 2010 Universal Studios Home Entertainment Productions LLC. All Rights Reserved.'''

我正在尝试用它编写一个xml节点,如下所示:

>>> from lxml import etree
>>> etree.Element('Items')
>>> x=etree.Element('Items')
>>> item.text=s
    Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "lxml.etree.pyx", line 953, in lxml.etree._Element.text.__set__ (src/lxml/lxml.etree.c:44971)
  File "apihelpers.pxi", line 677, in lxml.etree._setNodeText (src/lxml/lxml.etree.c:20273)
  File "apihelpers.pxi", line 1395, in lxml.etree._utf8 (src/lxml/lxml.etree.c:26485)
ValueError: All strings must be XML compatible: Unicode or ASCII, no NULL bytes or control characters

还有一个与此类似的问题,我无法用来解决上述问题:Filtering out certain bytes in python。我该如何解决上述问题?

1 个答案:

答案 0 :(得分:3)

由于您的文本已经编码为UTF8,因此您需要将其解码为Unicode。

x.text = s.decode('utf8')