Python用ElementTree解析XML时餐厅地址重复输出如何修改
代码修改方案
你写的代码问题出在内层循环的查找范围:你每次都从XML根节点搜索全量餐厅的地址,所以每打印一个餐厅名称,都会把所有餐厅的地址全部输出一遍,才会出现重复打印的问题。另外内外层循环用了同一个变量名tag,也容易引发逻辑混淆。
修改后的完整代码如下:
import xml.etree.ElementTree as ET root_node = ET.parse('record.xml').getroot() # 遍历每个餐厅节点 for restaurant in root_node.findall('restaurant'): # 获取当前餐厅的名称属性 print("Restaurant name:") print(restaurant.attrib['name']) # 直接在当前餐厅节点下查找属于它的address节点即可 for addr in restaurant.findall('address'): print(addr.text)
修改后运行,每个餐厅就只会输出自身对应的地址:单地址的餐厅输出1条地址,多地址的餐厅(比如示例里的Nyonya Baba)会输出自身的多条地址,不会再出现全量地址重复打印的问题。
内容的提问来源于stack exchange,提问作者TAI YU ZHE
相关产品推荐
相关产品推荐

