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

Python如何将SQL查询返回的指定字符串自动解析为目标格式dict?

问题解答

完全可以借助Python内置模块实现,无需手动写复杂的解析逻辑,操作方法如下:

  • 首先注意你给出的原始字符串存在笔误:第一个元素'user_id=c370缺失闭合单引号,实际使用前需要先修正这个格式问题。
  • 用ast.literal_eval把外层的字符串格式的列表直接转成Python原生列表,这个方法是安全的字面值解析工具,不会执行任意代码,比原生eval更可靠。
  • 遍历列表中的每一个key=value格式的字符串,按=拆分键和值,自动处理重复键(比如good_id)的聚合,同时可以根据需求把数值类的value转成int类型。

实现代码示例

import ast
from collections import defaultdict

# 修正笔误后的原始SQL返回字符串
raw_str = "['user_id=c370','good_cnt=2','good_id=1999','igoodid=12341','good_id=1111','good_id=1214','good_id=1437']"

# 第一步:转成原生列表
item_list = ast.literal_eval(raw_str)

# 第二步:聚合生成中间字典
res_dict = defaultdict(list)
for item in item_list:
    k, v = item.split('=', 1)
    # 尝试转数值类型,转失败则保留字符串
    try:
        v = int(v)
    except ValueError:
        pass
    res_dict[k].append(v)

# 第三步:把仅出现一次的键对应的值从列表改成单个值,匹配目标格式
final_dict = {}
for k, v in res_dict.items():
    final_dict[k] = v[0] if len(v) == 1 else v

print(final_dict)

运行后输出结果为:
{'user_id': 'c370', 'good_cnt': 2, 'good_id': [1999, 12341, 1111, 1214, 1437], 'igoodid': 12341}
如果不需要保留igoodid字段,额外加一行del final_dict['igoodid']即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 11:54:03