XML-анализ Elementtree останавливается на скобках - PullRequest
0 голосов
/ 29 января 2019

Я ищу способ разобрать эти переводы из предоставленного XML.Обратите внимание, что это может быть случай, когда существует более двух терминов, представленных как синонимы.

<root>
<languageGrp>
    <language type="Deutsch" lang="DE"/>
        <termGrp>
            <term>Apfel</term>
        </termGrp>
        <termGrp>
            <term>Braeburn</term>
        </termGrp>
</languageGrp>
<languageGrp>
    <language type="English" lang="EN"/>
        <termGrp>
            <term>Apple <xref Tlink="Deutsch:Apfelbaum">Tree</xref></term>
        </termGrp>
</languageGrp>
</root>

Мой текущий код выглядит следующим образом:

import xml.etree.ElementTree as ET
import pandas as pd
liste = []
zsmliste = []
sprachliste= []


for element in root.iter():
    if element.get("type")== "Deutsch" or element.get("type")== "English":
        sprache= element.get("type")
        sprachliste.append(element.get("type"))
        liste = []
        besch = []
        zsmliste.append(liste)
    for term in element.findall("term"):
        liste.append(term.text)

dic = pd.DataFrame(list(zip(sprachliste, zsmliste)))

Проблема в том, что elementtree прекращает синтаксический анализкак только он попадает в HTML-ссылку, и поэтому забывает о дереве, что приводит к недостаточному выводу.

Я думал об удалении внешней ссылки с помощью регулярного выражения, но все кричали на меня, так как это xml.Есть идеи, как решить эту проблему с помощью elementtree?

1 Ответ

0 голосов
/ 29 января 2019

Хорошо,

все, что мне нужно было сделать, это использовать

"".join(term.itertext())

в цикле for, чтобы это выглядело так:

for term in element.findall("term"):
    liste.append("".join(term.itertext()))

Извинитебеспокою вас всех.

...