首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果数字周围有文本,如何在python中使用xpath提取数字?

如果数字周围有文本,如何在python中使用xpath提取数字?
EN

Stack Overflow用户
提问于 2019-04-06 13:33:38
回答 3查看 111关注 0票数 1

我试图从网站获得价格,并面临的问题,有时他们添加额外的文本字段。

例如:

代码语言:javascript
运行
复制
<span class="price--content content--default">
Ihr Preis:
13.815,00&nbsp;€
</span>

>>> response.xpath('//span[@class="price--content content--default"]/text()').extract()

['\n', '\n', '\nIhr Preis:\n13.815,00\xa0€\n']

这里还有一个例子:

代码语言:javascript
运行
复制
<span class="price--content content--default">
Jetzt:
5.765,00&nbsp;€
</span>

如何确保xpath在所有情况下都获取数字,即使只有数字而没有文本?

作为一种替代方案,如果不可能,我如何使用python获取列表的第一个数字?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-04-06 14:12:41

你可以用正则表达式找到它们。例如,

代码语言:javascript
运行
复制
import re
string1 = '\nIhr Preis:\n13.815,00\xa0€\n'
string2 = '\nIhr Preis:\n5.765,00&nbsp;€\xa0€\n'
my_num = re.findall(r'\d+\.\d+', string1)   # or string2
print(my_num)
票数 0
EN

Stack Overflow用户

发布于 2019-04-09 04:49:52

即使使用Python1.0表达式也可以做到这一点,只要有且只有一个数字,并且您正在使用的XPath模块可以处理节点集以外的结果数据类型。使用:

代码语言:javascript
运行
复制
translate(
   //span[@class="price--content content--default"],
   translate(//span[@class="price--content content--default"],'0123456789.,',''),
   '')
票数 1
EN

Stack Overflow用户

发布于 2019-04-06 19:02:09

由于您正在寻找价格,因此问题是,您可能需要提取整个价格,包括美分(或给定货币的任何等价物)。因此,稍微修改一下您的第二个示例:

代码语言:javascript
运行
复制
my_str = '<span class="price--content content--default">Jetzt:5.765,12&nbsp;€</span>'

输出应该是整个5.765,12。因此,在不使用正则表达式的情况下,我建议:

代码语言:javascript
运行
复制
for char in my_str:
if char.isdigit() or char =='.' or char==',':
    print(char, end ="")

输出:

代码语言:javascript
运行
复制
5.765,12
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55546209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档