Python lxml - 按Child排序

时间:2013-06-05 14:06:18

标签: python sorting lxml

我有一个非常大的XML文件,下面是一个小例子。是否有一个捷径可供孩子排序?我正在使用Python和lxml。在我处理数据之前打开文件时,我想按id排序,是否有人建议如何执行此操作?我打开了数据,并且我正在以不同的格式写出数据,这些格式不容易提供排序,所以我想尽可能预先对数据进行排序。感谢您提供任何指导。

XML示例:

<case>
    <id>2</id>
<blah>someValue</blah>
<blahblah>someValue</blahblah>
</case>
<case>
<id>3</id>
<blah>someValue</blah>
<blahblah>someValue</blahblah>
</case>
<case>
<id>1</id>
<blah>someValue</blah>
<blahblah>someValue</blahblah>
</case>

我想这样:

<case>
<id>1</id>
<blah>someValue</blah>
<blahblah>someValue</blahblah>
</case>
<case>
<id>2</id>
<blah>someValue</blah>
<blahblah>someValue</blahblah>
</case>
<case>
<id>3</id>
<blah>someValue</blah>
<blahblah>someValue</blahblah>
</case>

1 个答案:

答案 0 :(得分:1)

您可以遍历所有案例元素。然后创建一个包含所有id值的列表。对列表进行排序。然后迭代列表并始终输出id中包含该值的case元素。

这听起来效率不高,但这是我想到的第一件事。

更新:我想,使用id值作为键并使用这些键对列表进行排序,将dicts添加到列表中会更好。之后,您可以遍历列表并将现在排序的dicts的值写入输出。