这是对先前问题的一种补充 asking the same things for the text values in an XML node .
lxml 可以在引用示例中通过 XPath(例如 //book/*
)测试标签的存在。
有了这个,我可以测试节点是否存在,如果不存在则返回 None
,如果存在则返回文本值。
但是,您似乎不能仅以相同的方式测试属性,例如//book/@author
将直接返回一个包含所有书籍中 author 属性值的列表,但没有 None
,只是一个较短的列表。
有没有办法在没有给出作者属性的情况下取回所有作者都没有的列表?
最佳答案
不,XPath 中没有这样的构造。
您可以分两步执行此操作:
- 像您目前所做的那样,使用 XPath 获取所有书籍元素(例如
//book/*
) - 迭代这些元素并检查它们是否每个都有作者属性(例如
book.get('author')
或if 'author' in book.attrib:
)
关于python - 如果找不到属性,如何使 XPath 在 Python 中返回 'None'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42026302/