【发布时间】:2015-04-21 13:55:18
【问题描述】:
我在使用 ast.literal_eval() 时遇到了问题。在下面的示例中,我只想将字符串 (myText) 转换为字典。但是 ast.literal_eval() 尝试评估 <__main__.myClass instance at 0x0000000052D64D88> 并给我一个错误。我完全理解这个错误,但我想知道是否有办法避免它(使用其他函数或使用函数 ast.literal_eval 的其他方式)
import ast
myText = "{<__main__.myClass instance at 0x0000000052D64D88>: value}"
ast.literal_eval(myText)
# Error: invalid syntax
# Traceback (most recent call last):
# File "<maya console>", line 4, in <module>
# File "C:\Program Files\Autodesk\Maya2016\bin\python27.zip\ast.py", line 49, in literal_eval
# node_or_string = parse(node_or_string, mode='eval')
# File "C:\Program Files\Autodesk\Maya2016\bin\python27.zip\ast.py", line 37, in parse
# return compile(source, filename, mode, PyCF_ONLY_AST)
# File "<unknown>", line 1
# {<__main__.myClass instance at 0x0000000052D64D88>: value}
# ^
# SyntaxError: invalid syntax #
提前感谢您的帮助!
【问题讨论】:
-
如果您知道
myText将相当正常,请考虑手动操作。 1 剥去牙套。 2. 以逗号分隔。 3. 在冒号上拆分每个结果字符串,然后将部分放入字典中。 -
你想在这里发生什么?
-
你了解
ast.literal_eval的作用吗?如果您的示例是逐字逐句的,那么字典表示中的键和值都不是实际文字。 -
如果您将此类信息存储为字符串,您可能试图以错误的方式解决问题。你试图解决什么基本问题/你想评估这个字符串是什么?
-
您的数据已经受到不可逆转的损坏。使用更智能的解析器无济于事。
标签: python