Проблема заключается в том, что при попытке распарсить xml-документ получаю ошибку:
lxml.etree.XMLSyntaxError: Input is not proper UTF-8, indicate encoding!
Код:
#-*- coding cp1251 -*-
import sys
from lxml import etree
reload(sys)
sys.setdefaultencoding("cp1251")
inputFile = a.ED
tree = etree.parse(inputFile)
nodes = tree.xpath('/')
print nodes.decode('cp1251')
Windows 7, python 2.7, lxml 2.3
В документе:
<ED101 sysCode ="04">
<dsig:SigValue xmlns:dsig="urn">AAAA</dsig:SigValue>
<Name>Сергей Николаевич</Name>
</ED101>
#-*- coding cp1251 -*-строчка не имеет никакого эффекта в вашем Питон коде, т.к. в нём нет не-ascii символов. 2- не используйтеreload(sys); sys.setdefaultencoding("cp1251")-- это просто способ испортить данные (без явных ошибок, которые бы на проблему указали) или получить кракозябы на выходе. 3-.decode('cp1251')выглядит ошибочно. lxml должен и так возвращатьunicodeтип для не-ascii содержимого. Достаточно печататьunicodeнапрямую. – jfs Mar 29 '16 at 20:28codingдобавить, чтобы как декларация кодировки строчка воспринималась. Пример:# -*- coding: utf-8 -*-(без двоеточияSyntaxErrorвозникнет, если не-ascii символ исходном коде появится (в строковых константах, в комментариях). – jfs Mar 29 '16 at 23:41