使用python将XML标记值排序到不同的文件中?

2024-04-25 19:55:59 发布

您现在位置:Python中文网/ 问答频道 /正文

以下是XML代码的示例:

<root>
<user1><Read>7</Read><Click>0.33</Click></user1>
<user2><Read>2</Read><Click>0.95</Click></user2>
<user3><Read>7</Read><Click>0.12</Click></user3>
</root>

如何使用python将所有具有“Read”值7的用户排序到一个文件中,并将所有具有“Read”值2的用户排序到另一个文件中。你知道吗

这两个新文件应该是这样的: 包含所有read 7的文件:

<user1><Read>7</Read><Click>0.33</Click></user1>
<user3><Read>7</Read><Click>0.12</Click></user3>

包含所有读取2的文件:

<user2><Read>2</Read><Click>0.95</Click></user2>

我不关心新文件中的<root>标记,我只关心对用户进行排序。你知道吗


Tags: 文件代码用户标记示例read排序root
1条回答
网友
1楼 · 发布于 2024-04-25 19:55:59

我认为您需要对Python进行分组和排序itertools.groupby组首先需要排序:

import xml.etree.ElementTree as ET
import itertools

xml = '''<root>
<user1><Read>7</Read><Click>0.33</Click></user1>
<user2><Read>2</Read><Click>0.95</Click></user2>
<user3><Read>7</Read><Click>0.12</Click></user3>
</root>'''

root = ET.fromstring(xml)

def keyf(el):
  return el.find('Read').text


for key, group in itertools.groupby(sorted(root, key=keyf), key = keyf):
    with open(f'file{key}.xml', 'w') as f:
        for el in group:
            f.write(ET.tostring(el, encoding='unicode'))

请注意,我对输出文件使用了后缀.xml,但是如果您写出了几个顶级元素(如上所述),并且有几个元素具有相同的键值,那么结果文件在技术上不是格式良好的XML。你知道吗

相关问题 更多 >