繁体   English   中英

使用Python lxml的XML XPath搜索无法对text()输出进行过滤

[英]XML XPath search with Python lxml fails to filter on text() output

可能缺少一些明显的东西-当我过滤一般的“ a”节点时,我看到了它们的文本-包括我想要的目标链接-很好:

ipdb> print [x.text for x in root.xpath(u".//a")]
[u'\u0391\u03c0\u03bf\u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7', None, ... ]

但是,当我过滤上面返回的第一个'a'元素中包含的特定文本时,我什么也没得到:

ipdb> print [x.text for x in root.xpath(
    u".//a[text()=" + 
    u'\u0391\u03c0\u03bf\u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7' + 
    u']'  )]
[]
ipdb> 

有任何想法吗?

这里有两种语言:Python和XPath。 他们每个人都引用了字符串。

在解释Py​​thon语法时,传递给.xpath() (您的XPath表达式)的字符串的内容是这样的: .//a[text()=Some text] .xpath() = .//a[text()=Some text] 但是,文本文字字符串需要在XPath中引用: .//a[text()="Some text"] 然后,您需要将其编码为Python字符串。 在这里,您有几种选择:

.xpath('.//a[text()="Some text"]')
.xpath(".//a[text()=\"Some text\"]")
.xpath(""".//a[text()="Some text"]""")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM