lxml이 xml을 처리할 때 문자 인코딩 문제

黄舟
풀어 주다: 2017-04-18 09:16:02
원래의
2502명이 탐색했습니다.

문제를 단순화하기 위해 xml의 내용을 다음 형식으로 단순화합니다.

<?xml version="1.0" encoding="gbk"?>
<DOCUMENT>
<da><![CDATA[中文,就是任性]]></da>
</DOCUMENT>
로그인 후 복사

인코딩은 gbk이고 노드 중 하나는 한자를 사용합니다. lxml에서 다음 예외가 발생했습니다.

lxml.etree.XMLSyntaxError: Extra content at the end of the document
로그인 후 복사

현재 해당 Python 스크립트는

tst = u&#39;<?xml version="1.0" encoding="gbk"?><DOCUMENT><da><![CDATA[中文,就是任性]]></da></DOCUMENT>&#39;
for event,element in etree.iterparse(BytesIO(tst.encode(&#39;utf-8&#39;))):
    print("%s, %s" % (element.tag, element.text))
로그인 후 복사

그러나 단순화하기 전에 또 다른 예외가 있습니다

lxml.etree.XMLSyntaxError: input conversion failed due to input error, bytes 0x8B 0x2C 0xE6 0x9D
로그인 후 복사
<제보받았습니다🎜>어떤 예외든 문자의 인코딩 형식과 관련이 있을 것 같습니다.

다양한 시도 끝에 스택
overflow에서 이 기사를 보았습니다. 기사에 언급된 문제는 xml의 인코딩 값과 관련이 있습니다.

tst = u&#39;<?xml version="1.0" encoding="gbk"?><DOCUMENT><da><![CDATA[中文,就是任性]]></da></DOCUMENT>&#39;
tst = tst.replace(&#39;encoding="gbk"&#39;, &#39;encoding="utf-8"&#39;)
for event,element in etree.iterparse(BytesIO(tst.encode(&#39;utf-8&#39;))):
    print("%s, %s" % (element.tag, element.text))
로그인 후 복사

이전 인코딩="gbk"를 인코딩:"utf-8"로 바꾸는 대체 문을 추가하고 최종적으로 결과를 얻었습니다:

da, 中文,就是任性
DOCUMENT, None
로그인 후 복사

위 내용은 lxml이 xml을 처리할 때 문자 인코딩 문제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!