2017-12-28 49 views
1

Python 2を使用して、変数(xmlタグの外にある)から文字列を保存し、リストに格納します。リストの特殊文字

まず:文字列の特殊文字が含まれている、私はそれらを印刷するとき、彼らは正しくエンコード(「ISO-8859-1」)

セカンドを使用していますあっても表示されません。文字列は、各1を表示

:リストと私は、これはこれは期待していものです

['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'] 

を取得しています何である彼らは同じリストであることを

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','abiétacée',...] 

これを修正する方法を知っている人はいますか?ありがとう

+0

関連https://stackoverflow.com/a/47882550/5320906 – snakecharmerb

+0

一つのファイル:Morphalou-2.0.xml – Ran

+0

それはようですあなたがPython 2を使用することを余儀なくされているのは、Python 3でUnicodeを扱うのは非常にうまくいきます。この記事は役に立ちましたか?[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

ありがとう@Artier、それを修正しました。 Python2.7については、私は役に立つ文書を見つけるために文書を調べるつもりです –