我正在编写一些代码,从一个站点获取原始HTML,找出一个可能随时间变化的值,使用regex,并将其与存储在文本文件中的值进行比较。
除了将regex对象转换为浮点数以允许与另一个浮点数进行比较外,一切都可以工作。
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_Match object;span=(77,85),match='10191.53'>
我想使用对象中的match='10191.53‘来对它执行算术。如何从对象中提取这个值?
我已经阅读了regex文档,并尝试了许多str()、int()和float()函数的不同组合,以便最终将对象的值操作为float。
我可以理解为什么float()不能用于此操作,但不能理解如何从对象中获取10191.53值以用于数学操作。
发布于 2019-08-28 15:09:13
发布于 2019-08-28 14:54:29
正如人们在评论中指出的那样,您需要使用
new_value.groups()此方法的输出取决于正则表达式的语法。为了使groups工作,您需要在正则表达式中包含捕获组,否则即使表达式与输入匹配,groups也始终是空的。
TLDR;
确保表达式捕获所需的文本,并使用groups方法从匹配中提取它。
https://stackoverflow.com/questions/57695024
复制相似问题