2012-08-22 41 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

相關問題