Python 不会像字典格式那样从文本文件中读取提取的行

我有一个具有不同输入的文本输入文件,如下所示,分别以字典和列表格式存储。部分文本文件如下:


#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 以它们实际存在的格式解释它们?


杨__羊羊
浏览 299回答 3
3回答

杨魅力

只需添加上述答案:利用: ast.literal_eval()但是从字典的键中删除/替换“\”,因为它可以在 literal_eval() 函数中创建 unicode 错误代码中的另一个错误,在转换为字典后,你不能做 d[0] 因为字典没有索引

慕莱坞森

您从文件中获得的行是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

该函数readlines执行它所说的:它读取 lines。你我都可以认识到这两行是 Python 字典和 Python 列表,但 Python 不能也不应该。在我看来,您正在从一个包含 Python 源代码的文件中读取配置设置。一种更标准的方法是使用.ini文件。看看模块configparser。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python