用途
ast.literal_eval():
import astast.literal_eval(x)
或使用将其视为JSON
json.loads():
import jsonjson.loads(x)
ast.literal_eval()以Python文字作为输入(因此Python源代码中的文本将为您提供一个值),
json.loads()以JSON输入。
演示:
>>> import ast, json>>> x = "[26, 25]">>> ast.literal_eval(x)[26, 25]>>> json.loads(x)[26, 25]
只有当您的输入字符串中包含多个整数列表时,两者之间的区别才会发挥作用。JSON字符串包含unipre,
ast.literal_eval()在Python
2上无法正确解释,并且JSON类型只是
ast.literal_eval()支持的一部分。
>>> x = '["List", "with", "strings", "including", "snowman", "u2603"]'>>> ast.literal_eval(x)['List', 'with', 'strings', 'including', 'snowman', '\u2603']>>> json.loads(x)[u'List', u'with', u'strings', u'including', u'snowman', u'u2603']>>> x = "(1, 2, 3, 'a tuple is Python syntax, not JSON')">>> ast.literal_eval(x)(1, 2, 3, 'a tuple is Python syntax, not JSON')>>> json.loads(x)Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/Users/mj/Development/Library/buildout.python/parts/opt/lib/python2.7/json/__init__.py", line 338, in loads return _default_deprer.depre(s) File "/Users/mj/Development/Library/buildout.python/parts/opt/lib/python2.7/json/deprer.py", line 365, in depre obj, end = self.raw_depre(s, idx=_w(s, 0).end()) File "/Users/mj/Development/Library/buildout.python/parts/opt/lib/python2.7/json/deprer.py", line 383, in raw_depre raise ValueError("No JSON object could be depred")ValueError: No JSON object could be depred


