从复杂XML中正确提取userID、itemID及对应balance的技术问询
问题根源分析
嘿,一眼就能看出问题在哪啦——你现在用了两层嵌套循环,把所有的itemID和所有的balance强行做了全配对,这自然会产生大量重复的组合!毕竟每个<bill>节点本身就是一个完整的单元,里面同时包含了对应的<item>(带itemID)和<balance>,你不该把这俩拆开来单独遍历。
修正后的代码
直接按<bill>节点为单位遍历,在每个账单里提取对应的itemID和balance,就能保证它们一一对应了:
userid = node.findtext('./userID') # 先获取所有的bill节点 bill_nodes = node.findall('./bill') for bill_node in bill_nodes: # 在当前bill节点内找对应的itemID item_id = bill_node.findtext('./item/itemID') # 在当前bill节点内找对应的balance balance = bill_node.findtext('./balance') print(userid, item_id, balance)
运行结果验证
用你提供的XML示例运行这段代码,会得到完全符合需求的输出:
10269 423999 1.20 10269 429053 1.20 10269 423991 24.00
每个用户的每个账单都对应了正确的itemID和balance,不会再出现重复配对的问题。
内容的提问来源于stack exchange,提问作者ViciOus CircLe
相关产品推荐
相关产品推荐

