Дублированные элементы xlmElementTree

У меня есть файл xml, который я пытаюсь разобрать. На данный момент я успешно проанализировал его и вернул в DataFrame.

Однако похоже, что у меня не одинаковое количество строк между разными элементами, и это, по-видимому, связано с дублированием определенных строк/элементов, которые имеют несколько значений.

Например, у меня есть строка, в которой элемент rule: . имеет attrib из {'code' : 'RI0200'}

а затем два child elementsvalue : . с attrib из {'test' : 'Id'} и {'test': 'Result'}

Проблема в том, что эти дочерние элементы «значение» встречаются в коде xml иногда 2 раза, а иногда 3, 4 или 5... отсюда и несоответствие в количестве строк в конце.

У меня вопрос: как можно присоединить каждый value к одному rule и, таким образом, дублировать столько строк rule, сколько имеется value?

При зацикливании с root.iter() я вижу, что есть какая-то точка присоединения:

    < Element 'xxxxxxx' at 0x0000000xxxx>

Моей первой попыткой было бы получить доступ к этой последней части, но я не знаю, как это сделать.

например

Дело 1: <Element 'Rule' at 0x00000xxx..><Element 'Value' at 0x00000xxx..><Element 'Value' at 0x00000xxx3..>

Случай 2: <Element 'Rule' at 0x00000xxx..><Element 'Value' at 0x00000xxx..><Element 'Value' at 0x00000xxx..><Element 'Value' at 0x00000xxx..>

Случай 3: <Element 'Rule' at 0x00000xxx..><Element 'Value' at 0x00000xxx..><Element 'Value' at 0x00000xxx..>

Случай 4: <Element 'Rule' at 0x00000xxx..><Element 'Value' at 0x00000xxx..><Element 'Value' at 0x00000xxx..><Element 'Value' at 0x00000xxx..><Element 'Value' at 0x00000xxx..>

код :

import xml.etree.ElementTree as ET

tree = ET.parse(r'C:\Users\xxx\Desktop\CRC\test2.XML')
root = tree.getroot()
    lst_rule2 = []
    lst_msg = []
    lst_value_name = [] 
    lst_value_result = []

   for rule in root.iter('rule'):
       lst_rule2.append(rule.attrib)

   for msg in root.iter('message'):
       lst_msg.append(msg.attrib)

   for value in root.iter('value'):
      lst_value_name.append(value.attrib)
      lst_value_result.append(value.text)

   import pandas as pd
   df1 = pd.DataFrame(lst_rule2)
   df2 = pd.DataFrame(lst_msg)
   df3 = pd.DataFrame(lst_value_name)
   df4 = pd.DataFrame(lst_value_result)

   df = pd.concat([df1,df2,df3,df4], axis=1)

print(len(lst_rule2), len(lst_msg), len(lst_value_name), len(lst_value_result))

возвращает 1413 1413 3630 3630

XML (часть):

введите описание изображения здесь

Можете ли вы показать код, который вы используете для синтаксического анализа? И как вы строите DataFrame?

alec_djinn 21.01.2019 11:39

Я просто добавляю код. Я надеюсь, что это помогает

ZaraThoustra 21.01.2019 11:52

Код еще неполный, где ввод и парсинг? Что такое root?

alec_djinn 21.01.2019 12:07

может ли это быть только из-за концепции файла XLM? что означает, что некоторые строки были удалены или, наоборот, другие дублированы?

ZaraThoustra 21.01.2019 15:04
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
4
43
0

Другие вопросы по теме