为什么此字符串不能与ast.literal_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
问题答案:
从ast.literal_eval
文档:
提供的字符串或节点只能由以下Python文字结构组成:字符串,数字,元组,列表,字典,布尔值和无。
串联+
不包括在其中:它不是文字表达式,而是对的调用str.__add__
。这是相同的原因,1+1
或者"hello".upper()
是行不通的。