所以我有一个长字符串,我希望将其放入带有索引和键的字典格式中。字符串如下所示:
"(\'unpredictable\', \'JJ\'), (\'man\', \'NN\')"
依旧等等。
我想将字符串拆分起来,让字典中的每个条目都与括号中的第一部分和第二部分的键匹配。在这个例子中,我的理想词典将是这样的:
{'unpredictable': 'JJ', 'man': 'NN'}
最好的办法是什么?
答案 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
查找所有单词,然后使用切片
>>> 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)
我找到了两种最简单的方法,希望这些有所帮助。
>>> s="(\'unpredictable\', \'JJ\'), (\'man\', \'NN\')"
>>> dict(eval(s))
{'unpredictable': 'JJ', 'man': 'NN'}
>>> s="(\'unpredictable\', \'JJ\'), (\'man\', \'NN\')"
>>> dic={}
>>> for each in eval(s):
... dic[each[0]] = each[1]
...
>>> dic
{'unpredictable': 'JJ', 'man': 'NN'}