MST

星途 面试题库

面试题:Python正则表达式在复杂JSON嵌套数据提取中的应用

给定一个复杂的多层嵌套的JSON数据结构,例如包含多级列表和字典嵌套的JSON,其中某个特定键值对可能在不同层级出现。要求使用Python的正则表达式和JSON处理相关库,提取出所有符合条件的键值对。请描述你的思路,并给出关键代码片段。
47.8万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试

思路

  1. 首先,使用json库将JSON字符串解析为Python的字典或列表对象。
  2. 由于数据结构是多层嵌套的,需要编写一个递归函数来遍历整个数据结构。
  3. 在递归函数中,对于字典类型,检查键值对是否符合条件,如果符合则记录下来。然后对字典的每个值(可能是列表或字典)继续递归调用。
  4. 对于列表类型,遍历列表中的每个元素(可能是列表或字典),继续递归调用。
  5. 这里不适合直接使用正则表达式,因为JSON数据结构遍历更适合用递归方式处理键值对,而不是通过正则表达式匹配。

关键代码片段

import json


def extract_key_value(json_obj, target_key):
    results = []

    def traverse(obj):
        if isinstance(obj, dict):
            for key, value in obj.items():
                if key == target_key:
                    results.append((key, value))
                traverse(value)
        elif isinstance(obj, list):
            for item in obj:
                traverse(item)


    traverse(json_obj)
    return results


# 示例使用
json_str = '{"a": 1, "b": [{"c": 2, "target_key": "value1"}, {"d": 3, "target_key": "value2"}]}'
json_obj = json.loads(json_str)
target_key = "target_key"
print(extract_key_value(json_obj, target_key))