回答
astr是一个“以字典形式”的字符串。 ast.literal_eval
将其转换为python字典对象。
In [110]: import ast
In [111]: astr="{'key1':'value1','key2':'value2'}"
In [113]: ast.literal_eval(astr)
Out[113]: {'key1': 'value1', 'key2': 'value2'}
请注意,如果有'astr'可以包含'os.remove(“foo”)''的任何方法,那么使用'eval'并不是一个好主意。实际上, – 2009-10-18 17:14:23
这是最好的,如果你对Python的2.6+,因为它不是受制于EVAL安全漏洞。
import ast
s = """{'key1':'value1','key2':'value2'}"""
d = ast.literal_eval(s)
你搞砸了报价。外部使用双引号。 – 2009-10-18 23:11:02
你从哪里得到这个字符串?它是JSON格式吗?或python字典格式?或者只是一些类似于python字典的ad-hoc格式?
如果是JSON,或者它只是字典,并且只包含字符串和/或数字,则可以使用json.loads
,这是最安全的选项,因为它无法分析python代码。
这种做法有一些不足之处,虽然,如果例如,该字符串用单引号'
,而不是双引号"
,更何况,它只是解析JSON对象/数组,其中仅巧合碰巧有着相似语法与pythons dicts /数组。
虽然我认为这可能是你得到的字符串是以JSON格式。我做这个假设是因为它是数据交换的通用格式。
- 1. 将字符串解析为字符
- 2. Python:将字符串列表解析为一个字典
- 3. Python字符串和字典解析
- 4. 解析字典串
- 5. 将xml解析为字典
- 6. 将json对象解析为字符串
- 7. Angular2将字符串解析为html
- 8. 将字符串解析为Json?
- 9. 将字符串解析为int
- 10. 将字符串解析为布尔值?
- 11. 将HTML字符串解析为数组
- 12. 将字符串解析为LINQ查询
- 13. JAXB - 将元素解析为字符串
- 14. 将字符串解析为JSON /散列
- 15. 将字符串解析为JavaScript语法
- 16. 将字符串解析为树结构?
- 17. 将XML字符串解析为XML
- 18. AngularJS将字符串解析为html
- 19. 将整数解析为字符串C
- 20. HtmlAgility - 将解析保存为字符串
- 21. 将SQL Server字符串解析为子字符串
- 22. 将一个字符串解析为两个双重字符串
- 23. OCaml将字符串解析为字符串* Int列表
- 24. 将XML字符串解析为数组字符串
- 25. 将一个字符串解析为多个字符串
- 26. 解析JSON从unicode字符串作为字典
- 27. 使用Boost-Regex将字符串解析为字符和数字
- 28. 将字符串拆分为字典
- 29. 将字符串转换为python字典
- 30. Python将字符串转换为字典
保存它在哪里/如何? – SilentGhost 2009-10-18 16:17:23
什么?为什么不把dict保存为dict而不是首先创建一个字符串?请提供一些更多的背景资料。这个问题没有什么意义,并表示更大和更深的问题可能导致这一点。 – 2009-10-18 19:59:51
正如Dave指出的,http://stackoverflow.com/questions/988228/converting-a-string-to-dictionary是这个 – dbr 2009-10-18 23:56:30