Python中XML扁平化:将外层标签属性赋予内层标签
解决方法
你需要先遍历每个 <period> 元素获取其 number 属性值,再遍历该周期下的所有 <play> 元素,将周期编号添加到每个 play 的属性字典中,这样就能保留每个 play 所属的周期信息。
修改后的代码如下:
import pandas as pd import xml.etree.ElementTree as ET # 假设已解析XML文件得到root对象 # tree = ET.parse('your_file.xml') # root = tree.getroot() d = [] # 先遍历每个period元素 for period in root.iter('period'): period_number = period.get('number') # 获取周期编号 # 遍历当前period下的所有play元素 for play in period.findall('play'): play_attrs = play.attrib.copy() # 复制play的属性字典 play_attrs['period_number'] = period_number # 添加周期编号属性 d.append(play_attrs) df = pd.DataFrame(d)
说明
- 通过先遍历
<period>再遍历其子<play>,能明确每个 play 所属的周期上下文,避免丢失层级关联。 - 使用
play.attrib.copy()是为了避免修改原XML元素的属性字典,保证数据独立性。 - 若需要将周期编号转为整数类型,可修改为
period_number = int(period.get('number'))。
内容的提问来源于stack exchange,提问作者bblackburn
相关产品推荐
相关产品推荐

