Python使用re.groupdict()时如何筛选botprob大于0.7的输出字典
解决方法
你只需在获取groupdict()结果后,将botprob字段处理为浮点数值再添加判断逻辑即可,修改后的代码如下:
import re def somefunction(pattern, tweet): pattern = r"^(?P<username>.*?)(?:\|{2}[^|]+){2}\|{2}(?P<botprob>.*?)(?:\|{2}|$)" filtered_res = [] for paper in tweet: for item in re.finditer(pattern, paper): current_dict = item.groupdict() # 去除botprob前后空格后转浮点,判断是否大于0.7 if float(current_dict['botprob'].strip()) > 0.7: filtered_res.append(current_dict) return filtered_res
说明
- 你原代码没有接收
item.groupdict()的返回值,也没有结果返回逻辑,上述代码用列表存储所有符合条件的字典,最终统一返回 - 必须先把
botprob字符串的首尾空格去除再转浮点类型,如果直接用字符串做比较会出现逻辑错误 - 按你的样例输入,调用该函数后返回的结果只有1条符合要求的字典:
{'username': 'dpsisi ', 'botprob': ' 0.8300337045 '}
内容的提问来源于stack exchange,提问作者FafamKurac123
相关产品推荐
相关产品推荐

