如何拆分字符串并将其放入字典?

时间:2014-11-11 02:20:53

标签: python string python-2.7 dictionary

所以我有一个长字符串,我希望将其放入带有索引和键的字典格式中。字符串如下所示:

"(\'unpredictable\', \'JJ\'), (\'man\', \'NN\')"

依旧等等。

我想将字符串拆分起来,让字典中的每个条目都与括号中的第一部分和第二部分的键匹配。在这个例子中,我的理想词典将是这样的:

{'unpredictable': 'JJ', 'man': 'NN'}

最好的办法是什么?

3 个答案:

答案 0 :(得分:1)

您的字符串是有效Python代码的表示。这意味着您可以使用ast.literal_eval将其解析为元组元组,然后在其上调用dict

>>> from ast import literal_eval
>>> data = "(\'unpredictable\', \'JJ\'), (\'man\', \'NN\')"
>>> literal_eval(data)
(('unpredictable', 'JJ'), ('man', 'NN'))
>>> dict(literal_eval(data))
{'man': 'NN', 'unpredictable': 'JJ'}
>>>

答案 1 :(得分:0)

我使用re.findall查找所有单词,然后使用切片

对其进行ziped
>>> import re
>>> a="(\'unpredictable\', \'JJ\'), (\'man\', \'NN\')"
>>> k=re.findall('\w+',a)
>>> k
['unpredictable', 'JJ', 'man', 'NN']
>>> dict(zip(k[::2],k[1::2]))
{'unpredictable': 'JJ', 'man': 'NN'}

答案 2 :(得分:0)

我找到了两种最简单的方法,希望这些有所帮助。

  1.  >>> s="(\'unpredictable\', \'JJ\'), (\'man\', \'NN\')"    
     >>> dict(eval(s))  
     {'unpredictable': 'JJ', 'man': 'NN'}  
    
  2.  >>> s="(\'unpredictable\', \'JJ\'), (\'man\', \'NN\')"     
     >>> dic={}  
     >>> for each in eval(s):  
     ...     dic[each[0]] = each[1]  
     ...
     >>> dic  
     {'unpredictable': 'JJ', 'man': 'NN'}