从文件中提取数据作为命令

2024-06-28 19:07:53 发布

您现在位置:Python中文网/ 问答频道 /正文

你能告诉我如何从文件中读取数据吗

文件包含以下行:

{'foo1': (0, 10), 'foo2': (0, 9), 'foo3': (0, 20)}
{'foo4': (0, 16), 'foo5': (0, 7), 'foo6': (0, 13), 'foo7': (0, 11)}
{'foo8': (0, 8), 'foo9': (0, 8), 'foo10': (0, 7)}
{'foo11': (0, 8)}

所有数据采用{'key':(value,value)}格式。文件中的所有键都不同

我想得到以下“命令”:

{'foo1': (0, 1), 'foo2': (0, 0), 'foo3': (0, 1), 'foo4': (1, 0), 'foo5': (0, 0), 'foo6': (0, 5), 'foo7': (0, 2), 'foo8': (2, 2), 'foo9': (1, 1), 'foo10': (0, 7), 'foo11': (0, 1)}

是否可以从文件中提取dict作为合并dict

有一阵子,我从文件中只得到了“列表”,在这一步上步履蹒跚

import ast
with open('filename') as f:
    content = [ ast.literal_eval( l ) for l in f.readlines() ] 
    print(content)
    

输出:

[{'foo1': (0, 10), 'foo2': (0, 9), 'foo3': (0, 20)}, {'foo4': (0, 16), 'foo5': (0, 7), 'foo6': (0, 13), 'foo7': (0, 11)}, {'foo8': (0, 8), 'foo9': (0, 8), 'foo10': (0, 7)}, {'foo11': (0, 8)}]

Tags: 文件valueastdictfoo1foo2foo3foo4
3条回答

如果您完全相信这个文件是无辜的,并且只是一个字典,那么您可以使用python内置函数eval来完成这项工作。e、 g:

myfile = open("file.txt", "r")
mydict = eval(myfile.read())

但是,如果这允许用户向文件中输入任何内容,则可能会在您的计算机上运行任意代码。如果这依赖于用户输入,则需要采取一些预防措施,请参阅Python: make eval safe上的顶部答案以了解一些想法

由于列表理解,当您在内容中获得词典列表时。 我会修改一下

import ast
content = {}
with open('filename') as f:
    content = content.update(content,ast.literal_eval( l ) for l in f.readlines())
print(content)

看看能不能用我是初学者。我从下面的链接学习了如何合并字典。 https://levelup.gitconnected.com/7-different-ways-to-merge-dictionaries-in-python-30148bf27add

相关问题 更多 >