Gor*_*ran 2 python regex django dictionary django-views
我有一个带有有效python字典的字符串
data = "Some string created {'Foo': u'1002803', 'Bar': 'value'} string continue etc."
Run Code Online (Sandbox Code Playgroud)
我需要提取该字典。我尝试使用正则表达式,但由于某些原因re.search(r"\{(.*?)\}", data)无法正常工作。有什么更好的方法可以提取此词典?
来自@AChampion的建议。
>>> import re
>>> import ast
>>> x = ast.literal_eval(re.search('({.+})', data).group(0))
>>> x
{'Bar': 'value', 'Foo': '1002803'}
Run Code Online (Sandbox Code Playgroud)
所以您要寻找的模式是 re.search('({.+})', data)
您应该使用字符串提取花括号,因此ast.literal_eval可以将字符串转换为python字典。您也不需要r前缀as {或}捕获组中的前缀,它们()会在字面上进行匹配。
解析字典的更好方法,无需使用eval:
import re
import json
data = "Some string created {'Foo': '1002803', 'Bar': 'value'} string continue"
dict_object = json.loads(re.search('({.+})', data).group(0).replace("'", '"'))
Run Code Online (Sandbox Code Playgroud)
** 如果要解析的字典包含 unicode 字符串值(参考问题的示例字符串):
dict_object = json.loads(re.search('({.+})', data).group(0).replace("u'", '"').replace("'", '"'))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2636 次 |
| 最近记录: |