![](/img/trans.png)
[英]How to create a new Outlook email for every row of Excel using Python
[英]Python create an xml file for every row in excel
我有以下代碼,它從 excel 中的每一行創建一個 xml 文件。我想將 xml 文件寫入一個新文件夾(當前在與 python 相同的文件夾中生成文件),如何更改“output.write()”陳述? 我是編程新手,兩周前從 python 開始。
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.