You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3如何解析XML文件并提取incar节点下的配置键值对

解决方法

你可以直接定位incar节点,再遍历其下所有<i>标签提取属性和值即可,修改后的代码如下:

#!/usr/bin/env python
import xml.etree.ElementTree as ET

tree = ET.parse("vasprun.xml")
root = tree.getroot()

# 定位到incar节点
incar_node = root.find('incar')
# 遍历incar下所有的i标签
for item in incar_node.findall('i'):
    # 取name属性值,做大小写转换(首字母大写,其余小写)
    key = item.attrib['name'].capitalize()
    # 取标签文本,去除前后多余空格
    value = item.text.strip()
    # 按要求格式输出
    print(f"{key}={value}")

如果你只需要输出IStart和Prec两个字段,不需要输出全部配置,可以加过滤条件:

#!/usr/bin/env python
import xml.etree.ElementTree as ET

tree = ET.parse("vasprun.xml")
root = tree.getroot()

# 定义需要提取的目标字段
target_keys = {'ISTART', 'PREC'}
incar_node = root.find('incar')
for item in incar_node.findall('i'):
    name_attr = item.attrib['name']
    if name_attr in target_keys:
        key = name_attr.capitalize()
        value = item.text.strip()
        print(f"{key}={value}")

逻辑说明

  • 用root.find('incar')可直接定位到目标父节点,不需要遍历根节点下全部子元素
  • 每个<i>标签的name属性对应配置字段名,调用capitalize()即可实现首字母大写、其余字母小写的格式转换,如果你需要自定义字段的大小写规则,自行调整字符串处理逻辑即可
  • 调用strip()可以去掉文本前后的多余空格,避免输出冗余空白字符

内容的提问来源于stack exchange,提问作者BaRud

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 18:45:02