Python循环仅返回首个通话记录实例,实际存在48条记录的问题
提取所有通话日志的解决方案
你的代码问题出在用单个变量存储匹配结果,每次找到带call_duration的条目时,都会覆盖之前的值,所以不管有没有break,最终只能得到一条记录。要收集所有48条通话记录,需要把存储结果的变量改成列表,逐条添加匹配项:
修改后的代码:
import json # 打开并加载JSON文件 with open('messages_1.json') as f: data = json.load(f) call_key = 'call_duration' calls = [] # 用列表存储所有通话记录 # 遍历所有消息,收集带通话时长的条目 for msg in data['messages']: if call_key in msg: calls.append(msg) # 打印所有通话记录 print(calls) # 如果想查看总数,可以加这句 print(f"共提取到{len(calls)}条通话记录")
关键修改点:
- 把
calls = None改成calls = [],用列表来存储多个结果 - 替换
calls = i为calls.append(i),将匹配到的每条记录添加到列表中 - 移除
break语句,确保遍历完所有消息条目 - 改用
with语句打开文件,自动处理文件关闭,更安全规范
内容的提问来源于stack exchange,提问作者Omnomymous
相关产品推荐
相关产品推荐

