使用Python3 ElementTree解析XML,提取视图点属性并生成指定表格
没问题,我来帮你搞定这个需求!下面是用Python3的ElementTree解析XML、提取viewpoint标签及属性,并且按要求整理成表格的完整方案:
Python3 ElementTree解析XML并整理数据
1. 解析XML的代码实现
首先,我们先模拟一个符合场景的XML片段(你可以替换成自己的XML文件路径),然后用ElementTree完成提取:
<!-- 示例XML片段 --> <root> <viewpoint name="good filter design" description="Effective filtering approach"/> <viewpoint name="poor filter design" description="Ineffective filtering approach"/> <viewpoint name="signal analysis" description="Signal characteristics study"/> <viewpoint name="noise reduction" description="Noise mitigation techniques"/> <viewpoint name="system optimization" description="Overall system tuning"/> </root>
对应的Python代码:
import xml.etree.ElementTree as ET # 方式1:解析本地XML文件(推荐实际使用) # tree = ET.parse('your_viewpoints.xml') # root = tree.getroot() # 方式2:直接解析XML字符串(适合快速测试) xml_content = ''' <root> <viewpoint name="good filter design" description="Effective filtering approach"/> <viewpoint name="poor filter design" description="Ineffective filtering approach"/> <viewpoint name="signal analysis" description="Signal characteristics study"/> <viewpoint name="noise reduction" description="Noise mitigation techniques"/> <viewpoint name="system optimization" description="Overall system tuning"/> </root> ''' root = ET.fromstring(xml_content) # 提取所有viewpoint标签的属性 viewpoint_list = [] for vp in root.findall('viewpoint'): # 提取name属性和其他需要的属性,这里以description为例 vp_info = { "name": vp.get("name"), "description": vp.get("description") } viewpoint_list.append(vp_info) # 按要求分组:第一组是两个filter design,第二组是剩下三个 group_filter = [vp for vp in viewpoint_list if "filter design" in vp["name"]] group_others = [vp for vp in viewpoint_list if "filter design" not in vp["name"]]
2. 按要求整理成表格
根据你的需求,我们把两个filter design放在同一行,其余三个放在第二行,整理成如下表格:
| 视图点名称 | 属性描述 | 视图点名称 | 属性描述 | 视图点名称 | 属性描述 |
|---|---|---|---|---|---|
| good filter design | Effective filtering approach | poor filter design | Ineffective filtering approach | - | - |
| signal analysis | Signal characteristics study | noise reduction | Noise mitigation techniques | system optimization | Overall system tuning |
代码小说明
- 使用
ET.parse()解析本地XML文件,或者ET.fromstring()解析XML字符串,两种方式按需选择 findall('viewpoint')可以精准定位所有目标标签get(属性名)方法能快速提取标签的指定属性值- 通过简单的列表推导式完成数据分组,方便后续按要求整理表格
内容的提问来源于stack exchange,提问作者frank hk
相关产品推荐
相关产品推荐

