我有一个具有不同输入的文本输入文件,如下所示,分别以字典和列表格式存储。部分文本文件如下:#Drive-Size-Mapping{'root' : 50 , '\usr' : 20, 'swap' : 1}#OS-Version[7.1, 7.2, 7.3, 7.4, 7.5, 7.6]如您所见,第一行是字典格式,第二行是列表格式。现在,当我在变量中读取和存储行时,Python 无法识别格式。这是我正在尝试的代码: f=open("C:\\Users\xyz\\Desktop\\Inputs.txt")lines=f.readlines()i = lines.index("#Drive-Size-Mapping\n")di=dict()di = lines[i+1]print(di[0])j = lines.index("#OS-Version\n")list = lines[j+1]print(list[0])上面的代码是:{ {即它只打印数组的第一个数组索引中存在的项目。我希望 python 将这些变量分别解释为字典和列表。所以,如果我这样做print di["root"]我的代码应该将其识别为字典并打印为50. 并且 print(list[0])应该将其识别为列表和输出7.1.请让我知道应该如何操作文件行以使 python 以它们实际存在的格式解释它们?
3 回答
杨魅力
TA贡献1811条经验 获得超6个赞
只需添加上述答案:
利用:
ast.literal_eval()
但是从字典的键中删除/替换“\”,因为它可以在 literal_eval() 函数中创建 unicode 错误
代码中的另一个错误,在转换为字典后,你不能做 d[0] 因为字典没有索引
慕莱坞森
TA贡献1810条经验 获得超4个赞
您从文件中获得的行是string. 如果要将它们转换为dict或list对象,可以使用literal_eval:
from ast import literal_eval
...
d = literal_eval(lines[i+1])
...
l = literal_eval(lines[i+1])
如果您可以更改输入文件的格式,我会考虑将其修改为json文件,以便使用json 模块方便地存储和加载您的对象。
catspeake
TA贡献1111条经验 获得超0个赞
该函数readlines执行它所说的:它读取 lines。你我都可以认识到这两行是 Python 字典和 Python 列表,但 Python 不能也不应该。
在我看来,您正在从一个包含 Python 源代码的文件中读取配置设置。一种更标准的方法是使用.ini文件。看看模块configparser。
添加回答
举报
0/150
提交
取消
