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

Python解析JSON仅输出单条结果,如何正确迭代获取多组verse数据?

解决JSON解析中迭代多组verseId与verseText的问题

问题分析

你的代码存在两个核心问题:

  1. 外层循环遍历的是data['data']['chapter']['content'],这个数组仅包含1个paragraph类型的对象,因此循环仅执行一次,只能输出第一组内容。
  2. 硬编码索引0和1获取元素,无法遍历后续的verse元素,完全没有利用迭代逻辑处理多组数据。

修正方案

需要深入到paragraph内部的content数组,遍历其中的元素并配对verse-number与verse-text。以下提供两种可行实现:

方法1:按固定步长遍历(适合结构稳定的场景)

利用每两个元素为一组的规律,按步长2遍历数组:

import json
with open('data.json') as f:
    data = json.load(f)

# 定位到paragraph内部的内容数组
inner_content = data['data']['chapter']['content'][0]['content']

# 每2个元素为一组,遍历获取verseId和verseText
for i in range(0, len(inner_content), 2):
    verse_id = inner_content[i]['verseId']
    verse_text = inner_content[i+1]['verseText']
    print(f"{verse_id}\t{verse_text}")

方法2:按元素类型匹配(适合结构可能变化的场景)

通过判断元素类型,动态记录当前verseId,遇到对应文本时输出:

import json
with open('data.json') as f:
    data = json.load(f)

inner_content = data['data']['chapter']['content'][0]['content']
current_verse_id = None

for item in inner_content:
    if item['type'] == 'verse-number':
        current_verse_id = item['verseId']
    elif item['type'] == 'verse-text' and current_verse_id:
        print(f"{current_verse_id}\t{item['verseText']}")
        current_verse_id = None

两种方法均可输出你期望的结果:

PSA.117.1       Sed ut perspiciatis unde omnis iste natus.
PSA.117.2       Lorem ipsum dolor sit amet.

内容的提问来源于stack exchange,提问作者bsteo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 10:42:05