gpt4 book ai didi

python - 使用 xpath 从 text() 中删除某些内容的方法是什么?

转载 作者:行者123 更新时间:2023-12-01 03:19:52 25 4
gpt4 key购买 nike

我正在 python 中使用 xpath 来解析 html 文件中的表。我正在使用这个 xpath :

//td//text()

这给我输出两个字符串:

['australia', '$3333.99']

我想要的输出:

['australia', '3333.99']

但是我想去掉 $ 符号,我一般如何使用 xpath 做到这一点?我已经尝试过 substring-after 但它不起作用。

这就是我尝试的方法:

//td//text()[substring-after(.,'$')]

但是我得到了这个输出:

['$3333.99']

结果中缺少澳大利亚

最佳答案

除了使用 translate() (如其他答案中发布的),您还可以使用 substring() function并动态确定切片的开头:

In [4]: [item.xpath("substring(., starts-with(., '$') + 1)") for item in root.xpath("//td")]
Out[4]: ['australia', '3333.99']

顺便说一句,这种方法比使用 translate() 更安全,因为这里我们只删除字符串开头的单个 $ 字符,如果它存在,但 translate() 会替换您正在提取的每个 td 文本中出现的所有 $ 。您可能会遇到一些不需要的副作用。

请注意,在任何情况下,您都必须分两步完成 - 如果像这样使用,则 translate()substring() 函数不会应用于每个节点translate(//td//text(), "$", ""),引用文献:

或者,您可以使用 Python 和 .lstrip() 来修剪它:

[item.lstrip("$") for item in root.xpath("//td//text()")]

关于python - 使用 xpath 从 text() 中删除某些内容的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42028759/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com