我正在尝试从文件中读取字典,然后将字符串放入字典中。我有这个,
with open("../resources/enemyStats.txt", "r") as stats:
for line in stats:
if self.kind in line:
line = line.replace(self.kind + " ", "")
line = dict(line)
return line
而 txt 文件中的行是,
slime {'hp':5,'speed':1}
我希望能够返回一个字典,以便我可以轻松访问敌方角色的 hp 和其他值。
dict()
不解析Python字典的文字语法;它不会接受字符串并解释其内容。它只能接受另一个字典或一系列键值对,您的行不符合这些条件。
您需要在此处改用 ast.literal_eval()
函数:
from ast import literal_eval
if line.startswith(self.kind):
line = line[len(self.kind) + 1:]
return literal_eval(line)
我还稍微调整了self.kind
的检测;我假设您想匹配它,如果在行首找到self.kind
。
对于遇到此线程的其他人:在 Python 3 中,json
包在这里将字符串转换为字典:
dict('{"ID":"sdfdsfdsf"}')
# ValueError: dictionary update sequence element #0 has length 1; 2 is required
import json
type(json.loads('{"ID":"sdfdsfdsf"}'))
# dict