TypeError: list indices must be integers or slices, not str error appears во время парсинга xml файла
Я пытаюсь распарсить xml файл который получаю в локальной сети, но получаю следуйщую ошибку:
print(value2['@id'])
TypeError: list indices must be integers or slices, not str
Сам код выглядит так:
import requests
import xmltodict
url = 'http://192.168.1.8:8060/query/apps'
text = requests.get(url).text
#content = """
#<?xml version="1.0" encoding="UTF-8"?>
#<apps>
#<app id="31012" type="menu" #version="2.0.53">Vudu Movie & #TV Store</app>
#</apps>
#"""
text = text.split('\n')
text = text[1:]
text = ''.join(text)
data = xmltodict.parse(text)
data = dict(data)
for key1, value1 in data.items():
for key2, value2 in value1.items():
print(value2['@id'])
print(value2['@type'])
print(value2['#text'])
Буду благодарен за помощь! (Уже долго игрался с этим=( )
Ответы (1 шт):
Автор решения: Dmitry
→ Ссылка
После выяснения в комментариях структуры данных, получается что для вывода сущностей надо использовать следующий обход по данным
for key1, value1 in data.items():
for key2, value2 in value1.items():
if isinstance(value2, list):
for item in value2:
print(item['@id'])
print(item['@type'])
print(item['#text'])
То есть переменная value2 содержит список, в котором каждый член - упорядоченный словарь. Обратившись к члену списка, далее можно забирать значения по ключам