Как сделать выводной файл lxml со стандартами utf-8 в python - PullRequest
0 голосов
/ 01 декабря 2018

data.xml

<?xml version="1.0" encoding="UTF-8"?>
<ArticleSet>
    <Article>            
        <LastName>Bojarski</LastName>
        <ForeName>-</ForeName>
        <Affiliation>-</Affiliation>            
    </Article>
    <Article>            
        <LastName>Genç</LastName>
        <ForeName>Yasemin</ForeName>
        <Affiliation>fgjfgnfgn</Affiliation>            
    </Article>
</ArticleSet>

SAMPLE CODE

from lxml import etree

dom = etree.parse('data.xml')
root = dom.getroot()

for article in dom.xpath('Article[Affiliation="-"]'):
    root.remove(article)

dom.write('output.xml')

Этот код удаляет статьи, принадлежность которых равна - т.е.тег принадлежности выглядит как <Affliation>-</Affliation>, когда я сохраняю оставшийся вывод в output.xml, он анализирует символ Unicode Genç до Gen&#231; Я хочу сохранить его как есть.

Вывод кода

<ArticleSet>
    <Article>            
        <LastName>Gen&#231;</LastName>
        <ForeName>Yasemin</ForeName>
        <Affiliation>fgjfgnfgn</Affiliation>            
    </Article>
</ArticleSet>

Требуемый выход

<ArticleSet>
    <Article>            
        <LastName>Genç</LastName>
        <ForeName>Yasemin</ForeName>
        <Affiliation>fgjfgnfgn</Affiliation>            
    </Article>
</ArticleSet>

1 Ответ

0 голосов
/ 01 декабря 2018

В методе etree.write есть параметр encoding.Вы также можете использовать xml_declaration=True для объявления кодировки выходного документа.

dom.write('output.xml', encoding='utf-8', xml_declaration=True)

См. lxml документация .

...