Python输出乱序

标签 python xml

我需要一些非常简单的 XML 输出,因此我决定编写自己的函数。这只是第一步,但有些事情已经出了严重的问题。虽然我希望输出如下所示:

<A>
    <D>
        <I></I>
        <J></J>
        <K></K>
    </D>
    <E>
        <I></I>
        <J></J>
        <K></K>
    </E>

...等等。

输出看起来像这样:

  <I></I>
  <J></J>
  <K></K>
 <D>
 </D>
 <E>
 </E>
 <F>
 </F>
 <G>
 </G>
 <H>
 </H>
<A>
</A>
<B>
</B>
<C>
</C>

我确信我的错误很简单,但我就是看不到它。这是我正在使用的整个文件:

def XMLChild(list, depth):
    for arg in list:
        print '\t' * depth + '<' + arg + '></' + arg + '>'

def XMLParent(list, depth, child):
    for arg in list:
        print '\t' * depth + '<' + arg + '>'
        child
        print '\t' * depth + '</' + arg + '>'

list1 = ['A', 'B', 'C']
list2 = ['D', 'E', 'F', 'G', 'H']
list3 = ['I', 'J', 'K', ]

XMLParent(list1, 0, XMLParent(list2, 1, XMLChild(list3, 2)))

如您所见,这两个函数都应该打印标签。 XMLParent 应该允许传递子函数,可以是另一个父函数,也可以是一个子函数。无论我怎么看它,我都无法弄清楚为什么它会这样打印。

最佳答案

您不会返回结果,而是直接打印它。因此它将按照函数执行的顺序输出。您的代码等效于以下内容,它阐明了调用函数的顺序:

a = XMLChild(list3, 2)
b = XMLParent(list2, 1, a)
XMLParent(list1, 0, b)

尝试在每个函数中构建一个字符串,并将其返回给调用者。然后调用者可以将其附加到它自己的字符串缓冲区中并依次返回它。然后您可以像这样输出组合字符串,并在一个地方进行所有打印:

a = XMLChild(list3, 2)
b = XMLParent(list2, 1, a)
print XMLParent(list1, 0, b)

关于Python输出乱序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3078044/

相关文章:

java - 如何使用 dom 在 XML 文件中追加元素?

python - 在Python中将一个模块导入到另一个模块

python - 如何快速将 '001100' 之类的字符串转换为 numpy.array([0,0,1,1,0,0])?

php - 如果节点具有属性,如何从 xml 检索值?

asp.net - 在 asp.net 中编写和下载 xml 文件的最佳方法是什么?

java - 如何在我的 Activity map 中添加按钮?

java - 列表的自动 XmlRootElement 包装器

python 漂白剂 : inconsistent cleaning behaviour

python - 如何向空的numpy数组添加新行

Python Pandas 如果列 id 值更大