python - 我可以使用文本文件将数据加载到 python 中的字典中吗?
问题描述
基本上我想将字典存储在文本文件中,原因是我希望即使在完成程序后也能够打开文件并对其进行编辑。
这是我用来帮助我了解地质历史中某些事件的日期的测验程序,我希望能够在不访问代码的情况下添加更多问题。
所以我想要一个问题列表,旁边有他们的日期,这些问题将被导入回python,基本上是一个包含一堆问题的文件,如下所示:
"Pangea formed":335000000, #Carboniferous
"Gondwana split into Africa and South America":180000000, #Jurassic
"The Chicxulub crater, buried in Mexico, formed":66043000, #Cretaceous
问题是我不认为 python 在读取记事本文件时可以区分字符串和值。
有没有办法做到这一点?
解决方案
您想从文件中加载字典的内容。该文件应该是人类可读/可编辑的。一种解决方案是将文件保存为 JSON 格式。
JSON是一种格式,可用于将字典、列表等基本对象转换为文本,反之亦然。
所以让文件的内容为:
{
"Pangea formed":335000000,
"Gondwana split into Africa and South America":180000000,
"The Chicxulub crater, buried in Mexico, formed":66043000
}
现在该文件,即使是一个可以在记事本中打开和编辑的文本文件,也是 JSON 格式。注意左大括号和右大括号。要将文件加载到字典中,您可以执行以下操作:
import json
with open('file.json') as f:
my_dict = json.load(f)
请注意,我已删除评论,因为 JSON 不支持评论。此外,最后一个键值对不以逗号结尾。
推荐阅读
- android - 我什么时候需要在 Gradle 依赖项中使用 Kapt?
- r - 将二分网络的 igraph 布局从垂直方向旋转到水平方向
- java-8 - 将循环中的处理转换为将许多列表更新为 CompletableFuture
- c# - WinForms TopLevel false 表单与 TextBox 鼠标选择混淆
- c# - C#,计算文件名(掩码)中的数据块/块。示例 Smith_John_1234_06202019.zip
- junit5 - @ValueSource(classes= .....) 有什么用
- mysql - 如何忽略表 1 中的记录(谁的 fk-refrence 必须存在于表 2 中)但条件不满足
- python - 将字符串中的 i 个连续相同字符分组到列表中
- c# - 与 linq 结合使用时需要更新集合中的值
- c++ - 需要帮助理解'string ltrim(const string &)'的含义