Python CSV 数据到 XML

使用 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 csv

from lxml import etree as ET


# Assign file locations

csvFile = '/Users/jehringer/python_work/Work Testing/CSV/Order_123.csv'

xmlFile = '/Users/jehringer/python_work/Work Testing/CSV/myXMLFile.xml'



# Build XML Structure

root = 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 Values

ET.SubElement(queue, "Name").text = "process"

ET.SubElement(queue, "FullPathName").text = r"P:\process"


# Open CSV and run through

with 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 XML

tree = ET.ElementTree(root)

tree.write(xmlFile, pretty_print=True, xml_declaration=True)`


犯罪嫌疑人X
浏览 221回答 2
2回答

慕婉清6462132

没有 CSV 标准,它只是使用通用文本表示电子表格的一种方式,因此它实际上取决于您的 CSV 的格式。您可以使用 python csv 模块从 csv 文件中读取。然后,您可以通过压缩键和值来处理数据,以通常将它们表示为 dict。一旦您将所有内容作为 dict、lis 或两种类型的任意组合与嵌套,就可以轻松地将这些数据与其他数据融合或更新。然后您可以将生成的 python 数据类型转换为 xml。我通常宁愿使用 json 作为交换格式来做这种工作,但我会这样做。你应该看看这个:将&nbsp;Python 字典序列化为 XML&nbsp;或者你也有这个模块,它也允许解析、操作和编写 xml:https&nbsp;:&nbsp;//docs.python.org/3/library/xml.etree.elementtree。 html#module-xml.etree.ElementTree

烙印99

我在朋友的帮助下想通了。我们添加了一个创建我需要的静态 XML 字段的函数,然后调用该函数我们在 CSV 文件的行中循环的所有内容。感谢您的输入!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python