为什么这个字符串不适用于ast.literal_eval

use*_*192 4 python string eval

我收到格式错误的字符串错误.

这是我的测试

>>> eval("'Hello:: '+'fdsfds'")
'Hello:: fdsfds'
>>> import ast
>>> ast.literal_eval("'Hello:: '+'fdsfds'")
Traceback (most recent call last):
  File "<pyshell#4>", line 1, in <module>
    ast.literal_eval("'Hello:: '+'fdsfds'")
  File "C:\Python27\lib\ast.py", line 80, in literal_eval
    return _convert(node_or_string)
  File "C:\Python27\lib\ast.py", line 79, in _convert
    raise ValueError('malformed string')
ValueError: malformed string
Run Code Online (Sandbox Code Playgroud)

Dav*_*son 6

来自ast.literal_eval 文档:

提供的字符串或节点可能只包含以下Python文字结构:字符串,数字,元组,列表,dicts,布尔值和None.

连接使用+不包括在内:它不是文字表达式,而是对它的调用str.__add__.这是同样的原因1+1"hello".upper()不起作用.