我在使用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 #
感谢您的帮助!
以下是关于IT技术的翻译内容:
myText
是比较规则的,考虑手动处理。具体步骤如下:1. 去掉大括号。2. 按逗号分割。3. 将每个结果字符串按冒号分割,并将各部分存入字典中。 - unwind{<__main__.myClass instance at 0x0000000052D64D88>: {'name': 'theName'}, <__main__.myClass instance at 0x0000000052D73F48>: {'name': 'theName'}}
- Morgan