2012-08-22 39 views
4

我收到格式错误的字符串错误。为什么此字符串不适用于ast.literal_eval

这里是我的testings

>>> 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 
+0

我认为ast检查它是否可执行... –

回答

6

ast.literal_evaldocs

字符串或提供可能只包括以下的Python字面结构的节点:字符串,数字,元组,列表,http://stardict.sourceforge.net/Dictionaries.php下载,布尔和无。

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

+4

小心:字符串连接*不工作,例如, ''a''b''。这是加法操作,没有。 – DSM

+0

非常正确,谢谢! –

+0

所以基本上'literal_eval'完全没用。 – Thomas

相关问题