使用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 :(得分:1)
Python3自动处理此问题,您无需使用encode
对于列表,您将在每次迭代时创建一个新的,在循环上方创建它,并在迭代完XML元素后打印它。
工作示例(我已经多次将单词abiétacée
添加到XML中以重现您的情况):
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']