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

如何将特定格式的字符串转换为Python字典?

解决方案

核心思路是先统一引号格式,再用正则精准拆分顶级元素(避免误拆分嵌套内容里的空格),最后迭代处理嵌套结构的子项,实现字符串到嵌套字典的转换。

实现代码

import re
import pprint

def parse_nested_string(s):
    # 替换转义引号为普通双引号
    s = s.replace('"', '"')
    
    # 匹配顶级元素:带双引号的完整内容 或 不含空格的连续字符
    top_level_items = re.findall(r'(?:"[^"]+"|\S+)', s)
    
    result = {}
    for item in top_level_items:
        if '=' in item:
            # 拆分键和值(只拆第一个=,避免值里包含=的情况)
            key, value_part = item.split('=', 1)
            key = key.strip()
            # 处理嵌套的带引号内容
            if value_part.startswith('"') and value_part.endswith('"'):
                inner_content = value_part[1:-1].strip()
                # 拆分内部子项,过滤空内容并去除前后空格
                inner_items = [sub.strip() for sub in inner_content.split(',') if sub.strip()]
                inner_dict = {}
                for inner_item in inner_items:
                    if '=' in inner_item:
                        inner_key, inner_val = inner_item.split('=', 1)
                        inner_dict[inner_key.strip()] = inner_val.strip()
                    else:
                        inner_dict[inner_item.strip()] = None
                result[key] = inner_dict
            else:
                # 普通键值对,去除值的前后空格
                result[key] = value_part.strip()
        else:
            # 无值的键,设为None
            result[item.strip()] = None
    return result

# 测试示例字符串
st1 = 'key1 key2=value2 key3="key3.1, key3.2=value3.2 , key3.3 = value3.3, key3.4" key4'
dict1 = parse_nested_string(st1)

# 格式化输出结果
pprint.pprint(dict1)

代码说明

  1. 引号统一处理:先把字符串中的"替换为普通双引号,方便后续正则匹配。
  2. 顶级元素拆分:使用正则(?:"[^"]+"|\S+)精准匹配两种顶级元素:
    • "[^"]+":匹配带双引号的完整嵌套内容,避免拆分内部的空格和逗号
    • \S+:匹配不含空格的普通键或键值对
  3. 键值对处理:
    • 不含=的项直接作为键,值设为None
    • 含=的项拆分键和值,若值是带引号的嵌套内容,则进一步拆分内部子项生成子字典
    • 处理子项时,自动去除多余空格,兼容key3.3 = value3.3这种带空格的格式
  4. 空项过滤:拆分内部子项时,自动过滤因多余逗号产生的空内容,保证字典结构整洁

输出结果

{'key1': None,
 'key2': 'value2',
 'key3': {'key3.1': None,
          'key3.2': 'value3.2',
          'key3.3': 'value3.3',
          'key3.4': None},
 'key4': None}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 23:50:32