【发布时间】:2018-01-05 13:23:10
【问题描述】:
我有一个具有以下架构的 XML:
<?xml version="1.0" encoding="utf-8" ?>
<ROOT>
<facturic id_user="18446195"><artfacturic/></facturic>
<facturic id_user="18446195"><artfacturic/></facturic>
<facturic id_user="34259554"><artfacturic/></facturic>
</ROOT>
它们比 id_user 有更多的属性,但只有一个是相关的,因为我需要将 xml 文件拆分为具有重复 ID 的单独文件。
我设法使用下面的代码找到了重复项:
import os
from xml.etree import ElementTree
dom = ElementTree.parse(fullpath)
findNode = 'facturic'
findAttr = 'id_user'
childNodes = dom.findall(findNode)
userIdDict = dict() #student={'name':'john','age':23}
duplicateUserId = dict()
#GET UNIQUE USER ID AND COUNT
for c in childNodes:
userId = c.attrib.get(findAttr) #gets attributes
#print(nrFact)
if userId not in userIdDict:
userIdDict[userId] = 1
else:
userIdDict[userId] = userIdDict[userId] + 1
# print(userIdDict)
for userId in userIdDict:
userIdCount = userIdDict[userId]
if userIdCount > 1:
duplicateUserId[userId]=userIdCount
你们能给我一个想法,如何创建新的 xml 文件,该文件只包含具有重复项的节点,但使用与初始文件相同的模式? 它应该类似于为每个重复节点创建新的 xml 文件,或者理想情况下,假设重复用户 ID 的最大数量为 4,只创建 4 个文件,但每个文件应该只包含具有所有其他初始属性的唯一 ID。
【问题讨论】:
标签: python xml python-3.x split