Откройте несколько файлов xml и проанализируйте их

Мне требуется ваша помощь. Я пытаюсь прочитать много файлов xlm только из одной папки, и мне нужно извлечь некоторую информацию о каждом xml. Эти xml имеют одинаковую структуру.

На данный момент я могу прочитать каждый XML-файл, но просто зафиксировать информацию о последнем открытом файле. Как я могу захватить информацию о каждом xml-файле и сохранить ее в структуре данных с помощью pandas?

Это мой код:

from os import listdir, path
import xml.etree.ElementTree as ET

mypath = '/Users/nicolasdiaz/Desktop/dtes copy'
files = [path.join(mypath, f) for f in listdir(mypath) if f.endswith('.xml')]

for file in files:
    print(file)
    tree = ET.parse(file)
    root = tree.getroot()

for docID in root.iter('Folio'):
    Invoice = 'Factura:' + docID.text
    print(Invoice)
for client_rut in root.iter('RUTRecep'):
    Rut = 'Rut:' + client_rut.text
    print(Rut)

И это мой результат:, но мне нужна информация из трех файлов xml

/Users/nicolasdiaz/venv/bin/python 
"/Users/nicolasdiaz/PycharmProjects/Marfil/lib/python3.10/Open files.py"
/Users/nicolasdiaz/Desktop/dtes copy/77116757-T33-F1877.xml
/Users/nicolasdiaz/Desktop/dtes copy/77116757-T33-F1960.xml
/Users/nicolasdiaz/Desktop/dtes copy/77116757-T33-F1961.xml
Factura:1961
Rut:93770000-8

Process finished with exit code 0

Поместите последние 2 петли за внутри 1-й (правый отступ их (и всего, что ниже) на один уровень).

CristiFati 06.05.2022 15:51
Почему в 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
1
23
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
  1. Переместите две нижние петли for в вышеуказанную, вот так:

    из списка импорта ОС, путь импортировать xml.etree.ElementTree как ET

mypath = '/Users/nicolasdiaz/Desktop/dtes копия' files = [path.join(mypath, f) для f в listdir(mypath), если f.endswith('.xml')]

для файла в файлах: распечатать файл) дерево = ET.parse(файл) корень = дерево.getroot()

for docID in root.iter('Folio'):
    Invoice = 'Factura:' + docID.text
    print(Invoice)
for client_rut in root.iter('RUTRecep'):
    Rut = 'Rut:' + client_rut.text
    print(Rut)
  1. Создайте фрейм данных перед оператором for и в цикле добавьте к нему, используя:

    df.append([файл, счет, рут])

Большое спасибо за вашу помощь, моя проблема сейчас в том, что у меня есть 3 разных списка, по одному для каждого xml, и я не могу сделать один фрейм данных с теми же данными, но объединенными в строки и столбцы [Счет1, Рут1] [Счет2 ,Rut2][Invoice3,Rut3] извините но я новичок в python

Nicolas Diaz 06.05.2022 19:01

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