6

不正な形式の文字列エラーが発生します。

これが私のテストです

>>> 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
4

1 に答える 1

8

ast.literal_eval ドキュメントから:

提供される文字列またはノードは、次のPythonリテラル構造のみで構成されます:文字列、数値、タプル、リスト、dict、ブール値、およびなし。

連結の使用+はその中に含まれていません。これはリテラル式ではなく、への呼び出しstr.__add__です。それは同じ理由である1+1か、"hello".upper()機能しません。

于 2012-08-22T19:38:10.333 に答える