Мне требуется ваша помощь. Я пытаюсь прочитать много файлов 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
Переместите две нижние петли 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)
Создайте фрейм данных перед оператором for и в цикле добавьте к нему, используя:
df.append([файл, счет, рут])
Большое спасибо за вашу помощь, моя проблема сейчас в том, что у меня есть 3 разных списка, по одному для каждого xml, и я не могу сделать один фрейм данных с теми же данными, но объединенными в строки и столбцы [Счет1, Рут1] [Счет2 ,Rut2][Invoice3,Rut3] извините но я новичок в python
Поместите последние 2 петли за внутри 1-й (правый отступ их (и всего, что ниже) на один уровень).