我在
中有一个带有效python字典的字符串data = "Some string created {'Foo': u'1002803', 'Bar': 'value'} string continue etc."
我需要提取那个字典。我尝试使用正则表达式但由于某种原因re.search(r"\{(.*?)\}", data)
无法正常工作。有没有更好的方法提取这个字典?
答案 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'}