Доступ к данным в теге XML с помощью Python - PullRequest
0 голосов
/ 17 марта 2019

Я начинаю с анализа данных, я хочу проанализировать XML-файл для анализа данных. Вот часть моего XML-файла:

<?xml version="1.0" encoding="UTF-8"?>
<SoccerFeed>
  <SoccerDocument>
    <Team>
      <Founded>1919</Founded>
      <Name>Angers</Name>
      <Player uID="p40511">
        <Name>Denis Petric</Name>
        <Position>Goalkeeper</Position>
        <Stat Type="first_name">Denis</Stat>
        <Stat Type="last_name">Petric</Stat>
        <Stat Type="preferred_foot">Left</Stat>
      </Player>
      <Player uID="p119744">
        <Name>Mathieu Michel</Name>
        <Position>Goalkeeper</Position>
        <Stat Type="first_name">Mathieu</Stat>
        <Stat Type="preferred_foot">Right</Stat>
      </Player>
    </Team>
  </SoccerDocument>
</SoccerFeed>

Как я могу получить доступ к предпочитаемому файлу вСтат тэг?Вот мой код Python для доступа к этим данным:

dom = ElementTree.parse(full_file)
teams = dom.findall('SoccerDocument/Team')
for t in teams:
    team_name = t.find('Name').text
    founded = t.find('Founded').text
    players = t.findall('Player')
    for pl in players:
        player_name = pl.find('Name').text
        player_position = pl.find('Position').text
        preferred_foot = pl.find('Stat[@Type="preferred_foot"]')

1 Ответ

1 голос
/ 18 марта 2019

Вот оно:

Идея состоит в том, чтобы найти все элементы Stat, в которых Type является предпочитаемым_фотом

import xml.etree.ElementTree as ET

xml = '''<?xml version="1.0" encoding="UTF-8"?>
<SoccerFeed>
  <SoccerDocument>
    <Team>
      <Founded>1919</Founded>
      <Name>Angers</Name>
      <Player uID="p40511">
        <Name>Denis Petric</Name>
        <Position>Goalkeeper</Position>
        <Stat Type="first_name">Denis</Stat>
        <Stat Type="last_name">Petric</Stat>
        <Stat Type="preferred_foot">Left</Stat>
      </Player>
      <Player uID="p119744">
        <Name>Mathieu Michel</Name>
        <Position>Goalkeeper</Position>
        <Stat Type="first_name">Mathieu</Stat>
        <Stat Type="preferred_foot">Right</Stat>
      </Player>
    </Team>
  </SoccerDocument>
</SoccerFeed>'''

root = ET.fromstring(xml)
prefered_foots = root.findall(".//Stat[@Type='preferred_foot']")
for foot in prefered_foots:
    print(foot.text)

выход

Left
Right
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...