Python XML解析问题:判断find返回None时逻辑错误
问题分析与解决
- 核心错误:你误将Python的
None对象与字符串'None'做了相等性判断。root.find()找不到目标标签时返回的是Python内置的空对象None,而非字符串'None',所以!= 'None'这个条件永远成立,导致else分支永远不会触发。 - 额外优化:没必要重复调用
root.find('personalDataRelated'),可以先把查询结果存入变量,既提升代码效率又增强可读性。
修正后的代码示例:
import xml.etree.ElementTree as et xmlfileName = 'new.xml' xmlparse = et.parse(xmlfileName) root = xmlparse.getroot() # 先存储查询结果,避免重复查找 personal_data_elem = root.find('personalDataRelated') print(personal_data_elem) # 直接和None对象做判断 if personal_data_elem is not None: data = "Oui" else: data = "Non"
也可以用更简洁的三元表达式写法:
import xml.etree.ElementTree as et xmlfileName = 'new.xml' xmlparse = et.parse(xmlfileName) root = xmlparse.getroot() data = "Oui" if root.find('personalDataRelated') is not None else "Non"
内容的提问来源于stack exchange,提问作者clemdcz
相关产品推荐
相关产品推荐

