XPath通过正则表达式运行text()以仅返回数字

时间:2013-11-23 04:29:28

标签: python regex xpath

我一直在尝试使用XPath,我是新手,我做了一个解析器,它会从其中一个节点的元素中提取text()。

我写了下面的

 xhtml = etree.HTML(i.get('content').encode('utf8'))
 result = etree.tostring(xhtml, pretty_print=True, method="html")
 root = html.fromstring(result)
 print root.xpath('//td[contains(text(), "Shipment Total:")]/following-sibling::td/b/text()')

以上是返回

[' $25.79 ']

有没有办法,只使用XPath修剪空格并仅返回数字以逃避美元符号?我在XPath中读到了关于fn :: match但我无法弄明白。任何人都可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

每个xpath规范(herehere),

print root.xpath('substring-after(normalize-space(//td[contains(text(), "Shipment Total:")]/following-sibling::td/b/text()), "$")')

应该这样做。

对于更复杂的提取,您可能不得不诉诸fn:replace。但请注意,这需要一个支持xpath 2.0的处理器。