Skip to main content
 首页 » 编程设计

python之将python字符串转换为字典

2025年05月04日27三少

我有一个包含一行的 excel 文档,类似于:

{MGY: {1: 85, 2: 15}} 
{MGY: {1:85, 2:15}, MWH: {1:99, 2:1}, MDE: {1:60, 2:40}, MIN: {1:60, 2:40}} 
{MGY: {1:85, 2:15}} 
{MWH: {1:99, 2:1}} 
{MGY: {1:85, 2:15}} 

当我尝试使用以下代码将行转换为字典时:

Python 2.7.6 (default, Mar 22 2014, 22:59:56)  
[GCC 4.8.2] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> meta = {u'CODE': u'N03', u'FABRIC': u'Jersey', u'Colour mix': u'{MGY: {1: 85, 2: 15}}', u'WEIGHT G': 165, u'Main': u'3:100', u'WEIGHT OZ': 4} 
>>> colour_mix = meta['Colour mix'] 
>>> colour_mix 
u'{MGY: {1: 85, 2: 15}}' 
>>> import ast 
>>> melange_items = ast.literal_eval(colour_mix) 

我得到以下回溯:

Traceback (most recent call last): 
  File "styles_fabric.py", line 194, in <module> 
    styleMeta = fabric_composition(style) 
  File "styles_fabric.py", line 185, in fabric_composition 
    melange_items = ast.literal_eval(dd) 
  File "/usr/lib/python2.7/ast.py", line 80, in literal_eval 
    return _convert(node_or_string) 
  File "/usr/lib/python2.7/ast.py", line 63, in _convert 
    in zip(node.keys, node.values)) 
  File "/usr/lib/python2.7/ast.py", line 62, in <genexpr> 
    return dict((_convert(k), _convert(v)) for k, v 
  File "/usr/lib/python2.7/ast.py", line 79, in _convert 
    raise ValueError('malformed string') 
ValueError: malformed string 

提取、转换字典中字符串的正确方法是什么?

请您参考如下方法:

我想你是想把 key 用引号引起来:

import ast 
ast.literal_eval('{"MGY": {1: 85, 2: 15}}') # {'MGY': {1: 85, 2: 15}} 

ast.literal_eval 可以 解析字符串文字,但 MGY 本身对它没有任何意义。