python - float() 参数必须是字符串或数字,而不是 '_sre.SRE_Match'

标签 python regex object floating-point

我正在编写一些代码以从站点获取原始 HTML,使用正则表达式查明可能随时间变化的特定值,并将其与存储在文本文件中的值进行比较。

一切正常,除了将我的正则表达式对象转换为 float 以允许与另一个 float 进行比较。


    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'

    print(new_value)

打印: <_sre.SRE_匹配对象; span=(77, 85), match='10191.53'>

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

我已经阅读了正则表达式文档并尝试了 str() int() 和 float() 函数的多种不同组合来操纵对象的值最终成为 float 。

我能理解为什么 float() 不能用于此,但不能理解如何从对象中获取 10191.53 值以在数学运算中使用它。

最佳答案

如果您的模式与您要转换为 float 的字符串完全匹配,您可以调用

result = regex.search(value)
new_value_str = result.group(0)
new_value = float(new_value_str)

以字符串形式返回搜索结果匹配并将其转换为 float ( docs )。 m.group(0) 将整个匹配项作为字符串返回。另见 this answer .

关于python - float() 参数必须是字符串或数字,而不是 '_sre.SRE_Match',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57695024/

相关文章:

Python Uvicorn——获取SSL证书信息

regex - 编写选择 VBScript 类及其名称的正则表达式

javascript - 根据出现的任意数字拆分字符串

java - 有hashCode()为什么Java还需要equals()?

c++ - 在 C++ 中使用静态函数,我的教授希望我告诉 main 哪个对象具有最高优先级而不传递任何内容

c# - 返回列表中对象的正确方法

python - python中的分段列表理解

Python 在 for 循环期间卡住

python - 如何将 Django 对象存储为 session 变量(对象不是 JSON 可序列化的)?

php - 初学者阅读正则表达式