0

我正在学习如何使用 ElementTree 和 minidom 解析 CSV 文件并将数据格式化为 XML 文件(用于漂亮的打印)。我已经如此接近了,但遇到了一个小障碍,我似乎无法绕开我的头。我有以下代码:

for csvFile in directory:
    root = Element('Order')
    with open(csvFile, 'rt') as f:
        reader = csv.reader(f)
        for row in reader:
            queue = row[0]
            token = row[1]
            current_order = SubElement(root, 'Token', {'text':token})
            details = SubElement(current_order, 'Queue',
                                 {'queue':queue})

    print prettify(root)

这会产生以下 XML:

<?xml version="1.0" ?>
<Order>
  <Token text="token">
    <Queue queue="site_code"/>
  </Token>
  <Token text="H54FC9">
    <Queue queue="Duplex_N-up"/>
  </Token>
</Order>

如何从 CSV 输入中去除标题,使 XML 看起来像这样:

<?xml version="1.0" ?>
<Order>
  <Token text="H54FC9">
    <Queue queue="Duplex_N-up"/>
  </Token>
</Order>

谢谢!

4

2 回答 2

3

您是否要丢弃 csv 文件中的第一行?如果是这样,你可以很容易地做到这一点:

for csvFile in directory:
    root = Element('Order')
    with open(csvFile, 'rt') as f:
        junk = next(f)         #read the first line, don't do anything with it.
        reader = csv.reader(f)
        for row in reader:
            queue = row[0]
            token = row[1]
            current_order = SubElement(root, 'Token', {'text':token})
            details = SubElement(current_order, 'Queue',
                                 {'queue':queue})

    print prettify(root)
于 2012-12-12T20:09:27.037 回答
1

如果您的 CSV 文件总是有标题,请立即reader.next()调用reader=csv.reader(f)

于 2012-12-12T20:18:08.053 回答