2015-12-18 73 views
1

我有以下字符串:刪除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。我將如何解決上述問題?

回答

3

由於您的文本已經編碼爲UTF8,因此您需要將其解碼爲Unicode。

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