使用BeautifulSoup封装函数统计XML元素返回None如何解决
问题解答
错误根源
你代码的核心问题是 动态属性访问的语法错误:
写suppe.para1时,Python会将para1当作属性的固定字面名称,而非传入的参数变量值。也就是说代码实际在查找suppe中名为para1的属性,不是你传入的"some"对应的属性,判定不通过后函数没有显式返回值,默认返回None。
修改后的正确代码
用Python内置的getattr()函数动态获取变量对应的属性即可:
def return_len(para1, para2): # 动态获取属性,不存在则返回None避免报错 target_parent = getattr(suppe, para1, None) if target_parent: return len(target_parent.find_all(para2)) # 元素不存在时默认返回0,也可根据需求调整返回值 return 0
修改后调用print(return_len("some","child"))即可正常输出结果3,和你写死的return_len1()效果一致。
内容的提问来源于stack exchange,提问作者MySt3rY
相关产品推荐
相关产品推荐

