首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >参数必须是字符串或数字,而不是'_sre.SRE_Match‘

参数必须是字符串或数字,而不是'_sre.SRE_Match‘
EN

Stack Overflow用户
提问于 2019-08-28 14:46:39
回答 2查看 498关注 0票数 3

我正在编写一些代码,从一个站点获取原始HTML,找出一个可能随时间变化的值,使用regex,并将其与存储在文本文件中的值进行比较。

除了将regex对象转换为浮点数以允许与另一个浮点数进行比较外,一切都可以工作。

代码语言:javascript
复制
    def find_new_value(): # retrieves value from website
        cmc_html = requests.get('https://websitewithvalue.com')
        noStarchSoup = bs4.BeautifulSoup(cmc_html.text, 
        features="html.parser")
        return noStarchSoup   

   new_value = float(btc_regex2.search(str(find_new_value())))

引向- TypeError: float()参数必须是字符串或数字,而不是'_sre.SRE_Match‘

代码语言:javascript
复制
    print(new_value)

打印:<_sre.SRE_Match object;span=(77,85),match='10191.53'>

我想使用对象中的match='10191.53‘来对它执行算术。如何从对象中提取这个值?

我已经阅读了regex文档,并尝试了许多str()、int()和float()函数的不同组合,以便最终将对象的值操作为float。

我可以理解为什么float()不能用于此操作,但不能理解如何从对象中获取10191.53值以用于数学操作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-28 15:09:13

如果模式与要转换为浮点数的字符串完全匹配,则可以调用

代码语言:javascript
复制
result = regex.search(value)
new_value_str = result.group(0)
new_value = float(new_value_str)

将搜索的结果匹配作为字符串返回,并将其转换为浮点数(文档)。m.group(0)以字符串的形式返回整个匹配。也见这个答案

票数 2
EN

Stack Overflow用户

发布于 2019-08-28 14:54:29

正如人们在评论中指出的那样,您需要使用

代码语言:javascript
复制
new_value.groups()

此方法的输出取决于正则表达式的语法。为了使groups工作,您需要在正则表达式中包含捕获组,否则即使表达式与输入匹配,groups也始终是空的。

TLDR

确保表达式捕获所需的文本,并使用groups方法从匹配中提取它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57695024

复制
相关文章

相似问题

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