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

如何仅拆分字符串指定位置字符,将SQL键值对转换为Python字典

实现SQL格式字符串转字典的方案

核心思路

用正则表达式直接匹配完整的键值对,避开引号内逗号的干扰:正则会优先匹配被双引号包裹的字符串值、以及数字类型值,不会被值内部的逗号打断匹配。

完整实现代码

import re
import ast

def sql_str_to_dict(sql_str):
    # 正则匹配键值对:组1匹配字段名,组2匹配值(双引号包裹的内容/整数/浮点数)
    pattern = r'(\w+)\s*=\s*(".*?"|\d+\.?\d*)'
    matches = re.findall(pattern, sql_str)
    res = {}
    for key, raw_val in matches:
        # 处理值的类型转换
        if raw_val.startswith('"') and raw_val.endswith('"'):
            # 去掉两端引号,直接取字符串内容
            val = raw_val[1:-1]
        else:
            # 数字类型自动转换,兼容整数、浮点数
            val = ast.literal_eval(raw_val)
        res[key] = val
    return res

测试效果

普通场景测试

输入:'field_1="value_1", field_2=1234'
输出:{'field_1': 'value_1', 'field_2': 1234}

值内带逗号场景测试

输入:'field_1="value_1a, value_1b", field_2=1234'
输出:{'field_1': 'value_1a, value_1b', 'field_2': 1234}

适配说明

  • 正则中的\s*兼容等号两侧、逗号后有无空格的场景
  • 匹配字符串时用.*?非贪婪规则,确保只会匹配到当前值的结束引号,不会跨值匹配
  • ast.literal_eval做数字类型转换,比手动判断类型更安全,也支持浮点数转换

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 11:06:01