【发布时间】:2021-05-23 06:24:38
【问题描述】:
我目前正在处理来自 DSTC8 模式对话的 JSON 文件:https://github.com/google-research-datasets/dstc8-schema-guided-dialogue
我正在尝试为每个对话提取键“act”的值,我的代码如下所示:
with open('path/dialogues_001.json', 'r') as f:
data = json.load(f)
col = []
#Looping through each dialogue
for i in data:
row = []
x.append(q)
#For every turns, we will loop through the 'frames' and 'actions'
for j in i['turns']:
for k in j['frames']:
for l in k['actions']:
#Looping through the key ; 'act'
for m in l['act']:
q.append(m)
print(x[0])
追加有效,但结果写为
['I', 'N', 'F', 'O', 'R', 'M', 'I', 'N', 'F', 'O', 'R', 'M', 'I', 'N', 'F', 'O', 'R', 'M', '_', 'I', 'N', 'T', 'E', 'N', 'T', 'R', 'E', 'Q', 'U', 'E', 'S', 'T']
而不是['INFORM', 'INFORM, INFORM_INTENT, 'REQUEST']
你们知道我的代码中出现了什么问题吗?是附加字母而不是单词值?
【问题讨论】:
-
for m in l['act']循环遍历l['act']中的每个字母。删除它,只需要q.append(l['act'])。我认为,如果您在每个步骤中添加 cmets 以了解数据的内容,并且变量名称描述了内容是什么,那么您会发现查看正在发生的事情会更有帮助。 -
感谢您的提示和建议!我肯定会添加 cmets
-
是的,请使用有意义的变量名。
-
哇——嵌套太多了!
-
@costaparas 让我知道您是否有另一种简单的方法来解析 JSON 文件而无需太多 for 循环 :)