You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 01:36:03