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

如何在Python中将字典格式的普通字符串转换为字典对象?

将非标准字典字符串转换为Python字典的方法

你的字符串不是标准的JSON或Python字典格式(键和字符串值未加引号),需要先修正格式再解析,以下是两种可行方法:

方法一:正则修正后用json.loads解析

先通过正则表达式给键和字符串值添加双引号,使其符合JSON规范,再用json模块解析:

import re
import json

test_string = "{Team A: [service1, service2], Team B: [service3, service4], Team 3: [service5, service6] }"

# 给字典的键添加双引号(匹配{或逗号后的键名)
formatted_str = re.sub(r'([{,]\s*)([\w\s]+)(\s*:)', r'\1"\2"\3', test_string)
# 给列表中的service字符串添加双引号
formatted_str = re.sub(r'([\[\],\s])(service\d+)([\[\],\s])', r'\1"\2"\3', formatted_str)

# 解析为字典
result_dict = json.loads(formatted_str)
print(result_dict)
# 输出: {'Team A': ['service1', 'service2'], 'Team B': ['service3', 'service4'], 'Team 3': ['service5', 'service6']}

方法二:正则修正后用ast.literal_eval解析

ast.literal_eval可以安全解析Python字面量,修正格式后同样适用:

import re
import ast

test_string = "{Team A: [service1, service2], Team B: [service3, service4], Team 3: [service5, service6] }"

# 同样先修正格式
formatted_str = re.sub(r'([{,]\s*)([\w\s]+)(\s*:)', r'\1"\2"\3', test_string)
formatted_str = re.sub(r'([\[\],\s])(service\d+)([\[\],\s])', r'\1"\2"\3', formatted_str)

# 解析为字典
result_dict = ast.literal_eval(formatted_str)
print(result_dict)

关键说明

  • 原始字符串的问题:Python字典和JSON都要求字符串类型的键/值必须带引号,你的字符串缺少这些引号,所以无法直接解析。
  • 正则的作用:第一个正则匹配字典的键(比如Team A),给它加上双引号;第二个正则匹配列表中的service1这类字符串,同样添加双引号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 03:35:10