Python如何匹配JSON意图列表输入并随机返回对应tag下的回复
实现方案
你需要先导入Python内置的random模块用于随机抽取回复,补全匹配成功后的逻辑,同时可以优化匹配规则避免大小写影响匹配结果,增加未匹配到对应意图时的兜底回复即可实现需求。
完整补全后的代码
import json import random # 将用户输入转小写+去首尾空格,匹配时也转小写,避免大小写、多余空格影响匹配结果 inp = input().strip().lower() matched_response = None # 路径前加r防止Windows下反斜杠被识别为转义符,指定编码避免中文乱码 with open(r'Python\intents.json', encoding='utf-8') as file: data = json.load(file) for intent in data['intents']: for pattern in intent['patterns']: # 统一转小写后匹配,支持完全匹配或部分匹配 if inp == pattern.lower() or inp in pattern.lower(): # 从当前意图的回复列表随机抽一条 matched_response = random.choice(intent['responses']) # 匹配到就跳出内层循环,无需继续匹配当前意图的其他模板 break # 已经匹配到就跳出外层循环,无需匹配其他意图 if matched_response: break # 输出结果,未匹配到返回兜底提示 if matched_response: print(matched_response) else: print("抱歉,我暂时无法理解您的问题,请换个问法试试~")
关键逻辑说明
random.choice()方法可以直接从传入的列表中随机抽取一个元素,正好适配你从responses列表选回复的需求- 大小写不敏感的匹配逻辑可以兼容用户输入大小写不规范的场景,比如输入
HI、bye都能正常匹配到对应意图 - 两层循环的跳出逻辑可以避免匹配到多个意图导致结果混乱
- 兜底回复可以避免没有匹配到任何意图时程序无输出
内容的提问来源于stack exchange,提问作者user14857618
相关产品推荐
相关产品推荐

