2017-12-28 9 views
1

Python 2를 사용하여 변수 (XML 태그에서 벗어남)에서 문자열을 저장하고이를 목록에 저장합니다.특수 문자가있는 목록

첫째 : 내가 그들을 인쇄가 제대로 인코딩을 ("ISO-8859-1")

제를 사용하고 심지어 표시되지 않습니다 때, 문자열, 특수 문자를 포함 : 문자열이 각 하나를 표시 내가 그들에게 같은 목록에하고 싶은 목록

import lxml.objectify 
from lxml import etree 
import codecs 
import xml.etree.cElementTree as ET 
file_path = "C:\Users\HP\Downloads\Morphalou-2.0.xml" 
for event, elem in ET.iterparse(file_path, events=("start", "end")): 
    if elem.tag == 'orthography' and event =='start': 
     data = elem.text 
     my_list = [] 
     if data is not None : 
      for i in data.split('\n'): 
       my_list.append(i.encode("ISO-8859-1")) 
      print (my_list) 

['abiotique'] 
['abiotiques'] 
[u'abi\xe9tac\xe9e'] 
[u'abi\xe9tac\xe9e'] 
[u'abi\xe9tac\xe9es'] 
[u'abi\xe9tin'] 
[u'abi\xe9tin'] 
[u'abi\xe9tins'] 
[u'abi\xe9tine'] 
[u'abi\xe9tines'] 

을 점점이 기대하고 무엇을하고있는 무슨이다 :

['abiotique','abiotiques','abiétacée',...] 

누구든지 해결 방법을 알고 있습니까? 감사합니다

+0

관련 https://stackoverflow.com/a/47882550/5320906 – snakecharmerb

+0

는 하나 개의 파일 : Morphalou-2.0.xml – Ran

+0

그것은으로의 여러분이 파이썬 2를 사용하도록 강요 당하면서, 파이썬 3에서 유니 코드를 다루는 것은 훨씬 진지합니다. 이 문서는 도움이 될 것입니다. [Pragmatic Unicode] (http://nedbatchelder.com/text/unipain.html). SO 베테랑 Ned Batchelder가 작성했습니다. –

답변

1

Python3이 자동으로 처리하므로 encode을 사용할 필요가 없습니다.
목록의 경우 반복 할 때마다 새 목록을 만들고 루프 위에 만들고 XML 요소를 반복하여 인쇄 한 후에 인쇄합니다.

예를 근무 (나는 당신의 상황을 재현하기 위해 XML에 시간의 무리를 말씀 abiétacée를 추가 한) :

my_list = [] 
for event, elem in ET.iterparse(file_path, events=("start", "end")): 
    if elem.tag == 'orthography' and event =='start': 
     data = elem.text 
     if data is not None : 
      for i in data.split('\n'): 
       my_list.append(i) 
print (my_list) 

출력

[ 'abiétacée', 'abiétacée'

을, 'abiétacée', 'abiétacée']

+0

문제는 python 2.7을 사용하고 있습니다. – Ran

+0

Thanks @Artier, 고치세요. Python2.7에 관해서는 도움이되는 자료를 찾기 위해 문서를 검토해 보겠습니다. –