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
相关产品推荐
相关产品推荐

