从字符串中提取Python字典

时间:2016-10-01 14:22:56

标签: python regex django dictionary django-views

我在

中有一个带有效python字典的字符串
data = "Some string created {'Foo': u'1002803', 'Bar': 'value'} string continue etc."

我需要提取那个字典。我尝试使用正则表达式但由于某种原因re.search(r"\{(.*?)\}", data)无法正常工作。有没有更好的方法提取这个字典?

2 个答案:

答案 0 :(得分:3)

来自@ AChampion的建议。

>>> import re
>>> import ast
>>> x = ast.literal_eval(re.search('({.+})', data).group(0))
>>> x
{'Bar': 'value', 'Foo': '1002803'}

所以您正在寻找的模式是re.search('({.+})', data)

你应该用字符串提取花括号,所以ast.literal_eval可以将字符串转换为python字典。您也不需要r前缀为{}在捕获组中,()将按字面匹配。

答案 1 :(得分:0)

您的解决方案有效!

In [1]: import re

In [2]: data = "Some string created {'Foo': u'1002803', 'Bar': 'value'} string continue etc."

In [3]: a = eval(re.search(r"\{(.*?)\}", data).group(0))

In [4]: a
Out[4]: {'Bar': 'value', 'Foo': u'1002803'}