2016-09-08 1 views
0

이 XML 파일에는 utf-8 인코딩이 있습니다.ElementTree UTF-8 소스 파일에서 XML 구문 분석

<?xml version="1.0" encoding="UTF-8"?> 
<Items> 
<Item> 
<Cikkszam>00008</Cikkszam> 
<EAN/> 
<Megjegyzes>BISK</Megjegyzes> 
<Leiras1>Bisk Ontario, Dakota szappantartóhoz</Leiras1> 
<Leiras2>műanyag betét</Leiras2> 
<CikkTipus>07 </CikkTipus> 
<ME_>db </ME_> 
<Tipus>Választható</Tipus> 
<A_ar>338</A_ar> 
<B_ar>0</B_ar> 
<C_ar>0</C_ar> 
<D_ar>0</D_ar> 
<E_ar>0</E_ar> 
<Tenyl_keszl_>0</Tenyl_keszl_> 
<Visszaig_>0</Visszaig_> 
<Diszponalt>0</Diszponalt> 
<Szabad_keszlet>0</Szabad_keszlet> 
</Item> 
</Items> 

나는이 파이썬 코드를 가지고 :

from xml.etree.ElementTree import ElementTree 
#import xml.etree.ElementTree 

items = ElementTree().parse('proba.xml'.encode('utf8')) 
#items = xml.etree.ElementTree.parse('proba.xml') 

products = items.findall("Item") 
for product in products: 
    print product.find("Leiras1").text 

내가 다음 오류 메시지가있어 내 스크립트 파일을 실행하면 :

C:\Python27>python read_xml_orig.py 
Bisk Ontario, Dakota szappantartóhoz 
Bisk Álló Wc kefe és papír tartó talpas 
Bisk sarok szappantartó króm 
Bisk sarok szappantartó króm 
Bisk üveg pohár pót 
Bisk ONTARIO üveg folyékony 
Bisk ONTARIO üveg polc 
Bisk ONTARIO dupla 
Bisk ONTARIO rud 
Traceback (most recent call last): 
    File "read_xml_orig.py", line 7, in <module> 
    print product.find("Leiras1").text 
    File "C:\Python27\lib\encodings\cp850.py", line 12, in encode 
    return codecs.charmap_encode(input,errors,encoding_map) 
UnicodeEncodeError: 'charmap' codec can't encode character u'\u0151' in position 
21: character maps to <undefined> 

답변

0

'proba.xml'.encode('utf8')이 UTF-8 문자열 'proba.xml'를 인코딩합니다. 같은 이름의 파일에는 아무런 영향을주지 않습니다. 파일이 정말로 인코딩됩니다

UTF-8은 코드가 작동합니다 :

from xml.etree.ElementTree import ElementTree 

doc = ElementTree().parse('proba.xml') 

products = doc.findall("Item") 
for product in products: 
    print product.find("Leiras1").text 

, 나를 그러나

Bisk Ontario, Dakota szappantartóhoz 

이를 인쇄하는 파일이 정말 UTF가 아닌 경우 -8이면 .parse() 동안 인코딩 오류가 발생할 수 있습니다.

이 경우 파일이 들어있는 인코딩을 파악하고 이에 따라 XML 선언을 수정해야합니다. 힌트 : 헝가리어에 대한 인코딩 후보는 Windows-1250입니다.