为了账号安全,请及时绑定邮箱和手机立即绑定

Python CSV 数据到 XML

Python CSV 数据到 XML

犯罪嫌疑人X 2021-11-16 18:15:15
使用 Python,我试图弄清楚如何根据来自 CSV 的输入创建 XML 文件。在从 CSV 中获取一行数据之前,必须使用相同的标签添加一段静态信息。这可以用于 1 行数据或 20 行。DocFile 标签的数量应该是行数的两倍。    <DocFile>       <FullPathName>P:\StaticFile.pdf</FullPathName>       <PageRange UseAllPages="true"/>       <Quantity>1</Quantity>       <Section>1</Section>    </DocFile>    <DocFile>       <FullPathName>row[0]</FullPathName>       <PageRange UseAllPages="true"/>       <Quantity>row[1]</Quantity>       <Section>1</Section>    </DocFile>这是 1 行数据的示例。以下是我到目前为止所写的内容。我遇到的问题是只有一部分 DocFile 将其转换为 XML。仅供参考,我对 Python 比较陌生。`import csvfrom lxml import etree as ET# Assign file locationscsvFile = '/Users/jehringer/python_work/Work Testing/CSV/Order_123.csv'xmlFile = '/Users/jehringer/python_work/Work Testing/CSV/myXMLFile.xml'# Build XML Structureroot = ET.Element('UltimateImposition')redirect = ET.SubElement(root, 'Redirection')printJob = ET.SubElement(redirect, 'PrintJob')queue = ET.SubElement(printJob, 'QueueName')documents = ET.SubElement(printJob, "Documents")docFile = ET.SubElement(documents, "DocFile")fullName = ET.SubElement(docFile, "FullPathName")pageCount = ET.SubElement(docFile, "PageRange")qty = ET.SubElement(docFile, "Quantity")section = ET.SubElement(docFile, "Section")# Define Static ValuesET.SubElement(queue, "Name").text = "process"ET.SubElement(queue, "FullPathName").text = r"P:\process"# Open CSV and run throughwith open(csvFile, 'r') as csvFiles:csvData = csv.reader(csvFiles, delimiter=',')for row in csvData:    for i in range(2):        if i == 1:            fullName.text = "2up_v4_ejectjob.pdf"            pageCount.set("UseAllPages", "true")            qty.text = "1"            section.text = '1'        else:            fullName.text = row[0]            pageCount.set("UseAllPages", "true")            qty.text = row[1]            section.text = '1'# Write to XMLtree = ET.ElementTree(root)tree.write(xmlFile, pretty_print=True, xml_declaration=True)`
查看完整描述

2 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

没有 CSV 标准,它只是使用通用文本表示电子表格的一种方式,因此它实际上取决于您的 CSV 的格式。

您可以使用 python csv 模块从 csv 文件中读取。然后,您可以通过压缩键和值来处理数据,以通常将它们表示为 dict。一旦您将所有内容作为 dict、lis 或两种类型的任意组合与嵌套,就可以轻松地将这些数据与其他数据融合或更新。然后您可以将生成的 python 数据类型转换为 xml。我通常宁愿使用 json 作为交换格式来做这种工作,但我会这样做。

你应该看看这个:将 Python 字典序列化为 XML 或者你也有这个模块,它也允许解析、操作和编写 xml:https : //docs.python.org/3/library/xml.etree.elementtree。 html#module-xml.etree.ElementTree


查看完整回答
反对 回复 2021-11-16
?
烙印99

TA贡献1829条经验 获得超13个赞

我在朋友的帮助下想通了。我们添加了一个创建我需要的静态 XML 字段的函数,然后调用该函数我们在 CSV 文件的行中循环的所有内容。感谢您的输入!


查看完整回答
反对 回复 2021-11-16
  • 2 回答
  • 0 关注
  • 220 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信