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

如何用Python将含类HTML元素的列表转换为嵌套JSON?

从类HTML列表生成嵌套JSON:入门指南与实现步骤

核心逻辑梳理

要完成这个需求,核心是先清理数据,再通过状态维护建立h5与h6的关联关系,具体分三步:

  1. 清理空记录:过滤掉内容为空的h5/h6标签
  2. 识别标签类型:提取h5(分类键)和h6(子项值)的文本内容
  3. 构建键值映射:遍历过程中维护当前分类,将后续h6归入对应分类下

实操代码示例(Python)

以常见的类HTML文本为例,直接可运行的实现:

import re
import json

# 示例输入的类HTML文本
html_text = """
<h5>分类A</h5>
<h6>子项A1</h6>
<h6>子项A2</h6>
<h5>分类B</h5>
<h6>子项B1</h6>
<h5></h5>
<h6>子项B2</h6>
"""

# 1. 提取有效标签内容,过滤空记录
# 正则分组匹配h5/h6标签,非贪婪匹配避免跨标签抓取
pattern = re.compile(r'<h([56])>(.*?)</h\1>', re.DOTALL)
matches = pattern.findall(html_text)
# 过滤掉内容为空的记录
filtered_items = [(tag, content.strip()) for tag, content in matches if content.strip()]

# 2. 构建嵌套键值结构
result_dict = {}
current_category = None
for tag, content in filtered_items:
    if tag == '5':
        # 遇到h5,设置为当前分类,初始化子项列表
        current_category = content
        result_dict[current_category] = []
    elif tag == '6' and current_category is not None:
        # 遇到h6,将内容追加到当前分类的子项列表
        result_dict[current_category].append(content)

# 3. 转为格式化JSON
json_result = json.dumps(result_dict, ensure_ascii=False, indent=2)
print(json_result)

运行后输出的JSON结构:

{
  "分类A": [
    "子项A1",
    "子项A2"
  ],
  "分类B": [
    "子项B1",
    "子项B2"
  ]
}

入门建议

  • 先啃正则基础:重点掌握分组匹配(提取标签类型和内容)、非贪婪匹配(避免抓取多个标签的内容),学会用re.findall批量提取数据,以及空值过滤的逻辑
  • 理解状态维护:current_category这个变量是核心——它在遍历过程中记录当前所属的分类,把分散的h6和对应的h5关联起来,这是构建嵌套结构的关键
  • 熟悉JSON操作:掌握所用语言的JSON序列化方法(比如Python的json.dumps、JS的JSON.stringify),学会格式化输出便于查看

后续学习方向

  • 语言基础强化:把你常用语言的循环、字典/对象操作练熟,这是所有结构化数据处理的基础
  • 正则进阶:尝试处理更复杂的HTML场景(比如标签带属性、内容换行),但注意正则不是处理HTML的最优解
  • 专业解析工具:后续可以学习HTML解析库(比如Python的BeautifulSoup、JS的cheerio),这类工具能更可靠地处理复杂HTML结构,避免正则的局限性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 15:45:21