본문 바로가기
파이썬

파이썬 ElementTree 및 유니 코드

by º기록 2021. 2. 6.
반응형

XML 파일에이 문자가 있습니다.

<data>
  <products>
      <color>fumè</color>
  </product>
</data>

다음 코드를 사용하여 ElementTree 인스턴스를 생성하려고합니다.

string_data = open('file.xml')
x = ElementTree.fromstring(unicode(string_data.encode('utf-8')))

다음과 같은 오류가 발생합니다.

UnicodeEncodeError: 'ascii' codec can't encode character u'\xe8' in position 185: ordinal not in range(128)

(참고 : 위치가 정확하지 않습니다. 더 큰 XML에서 샘플링했습니다.)

그것을 해결하는 방법? 감사

 

해결 방법

 

ElementTree가 작동하기 위해 XML을 디코딩 할 필요가 없습니다 . XML은 자체 인코딩 정보 (기본값은 UTF-8)를 전달하고 ElementTree는 유니 코드를 출력하여 작업을 수행합니다.

>>> data = '''... <data>
...   <products>
...       <color>fumè</color>
...   </products>
... </data>
... '''
>>> x = ElementTree.fromstring(data)
>>> x[0][0].text
u'fum\xe8'

데이터가 file (like) 객체에 포함 된 경우 파일 이름 또는 파일 객체를 ElementTree.parse () 함수에 직접 전달하면됩니다.

x = ElementTree.parse('file.xml')

 

참조 페이지 https://stackoverflow.com/questions/12349728

 

 

반응형

댓글