簡體   English   中英

Python 為 excel 中的每一行創建一個 xml 文件

[英]Python create an xml file for every row in excel

我有以下代碼,它從 excel 中的每一行創建一個 xml 文件。我想將 xml 文件寫入一個新文件夾(當前在與 python 相同的文件夾中生成文件),如何更改“output.write()”陳述? 我是編程新手,兩周前從 python 開始。

wb_data

df_data 是字典列表。

[{'Nume': 'Ciuica', 'Prenume': 'Larisa Bianca', 'Data': '30/01/1991 00:00:00', 'Cod': 789454, 'Localitate': 'Targu Jiu'},
 {'Nume': 'Balasa', 'Prenume': 'Valentin', 'Data': '14/09/1989 00:00:00', 'Cod': 215487, 'Localitate': 'Bucuresti'},
 {'Nume': 'Vinatoru', 'Prenume': 'Costin', 'Data': '06/12/1980 00:00:00', 'Cod': 254896, 'Localitate': 'Titu'}]

代碼:

import xml.etree.ElementTree as Et
import pandas as pd

wb_data = pd.read_excel("test.xlsx", sheet_name="Data", header=0)
wb_xml = pd.read_excel("test.xlsx", sheet_name="XML", header=0)

df_data = wb_data.to_dict("records")

lista_xml = []
index_lista = 0

for xml in wb_xml["Denumire_xml"]:
    lista_xml.append(xml)

for row in df_data:
    document = Et.Element("Document")
    for key, value in row.items():
        element = Et.SubElement(document, key)
        element.text = str(value)
    output = Et.ElementTree(document)
    Et.indent(output)
    output.write(lista_xml[index_lista])
    index_lista = index_lista + 1

只需使用絕對路徑,尤其是os.path.join來連接文件夾和文件名:

import os
...

xml_file_path = "/path/to/my/xml/outputs"

output.write(
    os.path.join(xml_file_path, lista_xml[index_lista])
)

但是,考慮使用新的DataFrame.to_xml()將數據框行導出到 XML 文件:

import os
import pandas as pd

xml_file_path = "/path/to/my/xml/outputs"

wb_data = pd.read_excel("test.xlsx", sheet_name="Data", header=0)
wb_xml = pd.read_excel("test.xlsx", sheet_name="XML", header=0)

# LIST COMPREHENSION
lista_xml = [xml for xml in wb_xml["Denumire_xml"]]

# SERIES TO LIST CONVERSION
lista_xml = wb_xml["Denumire_xml"].tolist()

# GROUP BY INDEX (I.E., ROW) WITH LOOP NUMBER
for n, (i, sub_df) in enumerate(wb_data.groupby(level=0)):
    sub_df.to_xml(
        os.path.join(xml_file_path, lista_xml[n])
    )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM