これは以前の質問asking the same things for the text values in an XML nodeのアドオンの一種です。属性が見つからない場合、XPathがPythonで 'None'を返すようにするには?
lxmlは、参考例のXPath(例えば、//book/*
)によってタグの存在をテストできます。 これでノードの存在をテストし、存在しない場合はNone
を返し、存在する場合はテキスト値を返します。
しかし、同じように属性をテストすることはできないようです。 //book/@author
は、すべての書籍のauthor属性の値を持つリストを直接返しますが、None
を付けないとリストが短くなります。
著者属性が指定されていないときにNonesを持つすべての著者とリストを返す方法はありますか?
またはリストの理解: '' book.attribの場合は 'author'、それ以外の場合はdata.xpath( '// book/*')] – LismUK