我有很多XML文件没有排序。我想通过名为" title"的标签内容对它们进行排序。我知道标题的顺序: 1.)社论 2.)内容 3.)俱乐部 等等 每个文件都有另一个"标题" -content。
文件编号1的XML结构如下所示:
<article>
<someTags>
</someTags>
<title>editorial</title>
</article>
如何浏览所有文件并按定义的顺序对其进行排序? 文件名可以如下所示:&#34; sorted_01.xml&#34;,&#34; sorted_02.xml&#34;等等。 我怎么能得到这个? 非常感谢您的帮助! :)
答案 0 :(得分:1)
将sort
或sorted
与返回title
标记文本的函数一起用作关键函数。
import glob
import xml.etree.ElementTree as ET
def get_title(filepath):
tree = ET.parse(filepath)
return tree.find('.//title').text
# Find `title` element and return the text of the element.
filepaths = glob.glob('*.xml')
print(sorted(filepaths, key=get_title))
请参阅demo。
答案 1 :(得分:1)
另一种方法(未经测试)
import glob, os
from lxml import etree
d = {}
titles = ['editorial', 'content' , 'club', ...] # ordered titles
for fname in glob.glob('*.xml'):
tree = etree.parse(fname)
title = tree.xpath('//title/text()')[0]
subtitle = tree.xpath('//subtitle/text()')[0]
key = '%s_%s' % (title, subtitle)
d[key] = fname
for idx,title in enumerate(titles, 1):
os.rename(d[title], 'sorted_%02d.xml' % idx)