簡體   English   中英

帶有特殊字符的列表

[英]list with special characters

使用 Python 2,我從一個變量(它在 xml 標記之外)中保存字符串並將其存儲到一個列表中。

第一:字符串包含特殊字符,當我打印它們時,即使使用 encode("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',...]

有誰知道如何解決這一問題 ? 謝謝

Python3 自動處理這個,你不需要使用encode
至於列表,每次迭代都會創建一個新列表,在循環上方創建它,並在對 XML 元素的迭代完成后打印它。

工作示例(我已經多次將abiétacée一詞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']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM