我正在编写一些代码以从站点获取原始 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/