Как извлечь внутренний вложенный тег, имя которого совпадает с именем внешнего тега? - PullRequest
0 голосов
/ 03 ноября 2019

Я новичок в науке о данных и надеялся получить ваш вклад в этот запрос. Когда я анализирую и пытаюсь использовать findall () для «Заголовка», я получаю все значения Заголовка. Что я действительно хочу, так это значение тегов 'Title' в RelatedTerms.

Кто-нибудь может помочь? Спасибо,

<?xml version="1.0" encoding="utf-8"?>
<Terms>
    <Term>
        <Title>.177 (4.5mm) Airgun</Title>
        <Description>The standard airgun calibre for international target shooting.
        </Description>
        <RelatedTerms>
            <Term>
                <Title>Shooting sport equipment</Title>
                <Relationship>Narrower Term</Relationship>
            </Term>
        </RelatedTerms>
    </Term>
</Terms>

Ответы [ 2 ]

0 голосов
/ 05 ноября 2019

Использование xml.etree.ElementTree :

import xml.etree.ElementTree as ET

tree = ET.parse("file.xml")  # Replace "file.xml" with the name of your XML file
root = tree.getroot()

for related_terms in root.findall("./Term/RelatedTerms"):
    for title_internal in related_terms.findall("./Term/Title"):
        print(title_internal.text)

Вывод:

Shooting sport equipment

Заменить file.xml in tree = ET.parse("test.xml")с именем вашего файла XML.

0 голосов
/ 03 ноября 2019

Использовать Beautifulsoup:

from bs4 import BeautifulSoup
temp  ="""<Terms>
            <Term>
            <Title>.177 (4.5mm) Airgun</Title>
            <Description>The standard airgun calibre for international target shooting. 
            </Description>
            <RelatedTerms>
            <Term>
            <Title>Shooting sport equipment</Title>
            <Relationship>Narrower Term</Relationship>
            </Term>
            </RelatedTerms>
            </Term>"""

temp=BeautifulSoup(temp,"lxml")
#see caps is off
s = temp.find('relatedterms')
print(s.find_all('title'))

Выход:

[<title>Shooting sport equipment</title>]
[Finished in 1.2s]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...