繁体   English   中英

从 python 中的 json 中提取数据

[英]extracting data from json in python

我正在获取匹配模式的响应,但是即使条件满足,output 也会导致 else 部分。 如果我丢弃其他部分,我的 output 将根据需要获得。

import numpy    
import random
import json     


with open("intents.json") as file:  
    data = json.load(file)  

for intent in data["intents"]:  
    for pattern in intent["patterns"]:  
        if "Hi" in intent["patterns"]:    
            w=intent["responses"]  
        else:  
            w=["Not found in pattern"]  
print(random.choice(w))

json 链接获取自: https://techwithtim.net/wp-content/uploads/2019/05/json-file.zip

试试这个,当你的条件满足时,你的两个循环都应该中断。 您没有这样做,因此问题可能已经出现:

import random
import json     


with open("intents.json") as file:  
    data = json.load(file)  

for intent in data["intents"]:  
    for pattern in intent["patterns"]:  
        if "Hi" in intent["patterns"]:    
            w=intent["responses"]  
            flag = 0
            break
        else:  
            w=["Not found in pattern"]  
    if flag == 0:
        break
print(random.choice(w))

我使用标志来表示内部循环已停止。

我想我在你的程序中发现了一个错误。 我相信它应该是这样的:

import random
import json     


with open("intents.json") as file:  
    data = json.load(file)  

for intent in data["intents"]:  
    for pattern in intent["patterns"]:  
        if "Hi" in pattern: ## Change 1 intent["patterns"] -- for --> pattern 
            w = pattern  ## Change 2 intent["patterns"] -- for --> pattern
            break ## Change 3 (Not sure about this one)
        else:  
            w = ["Not found in pattern"]  
print(random.choice(w))

我不确定,如果你的脚本中的break应该是 go,我可能认为这是最合乎逻辑的,因为你已经找到了你的模式并且你正在循环结束时打印结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM