【问题标题】:how to save and load a complex python data structure to file?如何将复杂的python数据结构保存并加载到文件中?
【发布时间】:2018-01-01 04:00:01
【问题描述】:

我将在 python 中逐行读取文件并将该行转换为字典。该行的结构有点复杂,我不知道如何在字典中转换它。这是我文件第一行的示例:

OrderedDict([('key', 'my_key'), ('rank', '2'), ('origin', 'IR'), ('num', '10'), ('num_2', '220'), ('same_array', ['a','b','d']), ('dif_array', ['g','h']), ('first_dic', OrderedDict([('name','ali'),('last','ali')])), ('num_', 0), ('response', OrderedDict([('ok_1', 0), ('red', 0), ('bad', 0)])), ('response_code', OrderedDict([('ok', 0), ('red', 0), ('bad', 0)]))])

我想阅读第一行并将其保存在字典中,以便可以使用诸如 print my_dictionary['key'] 之类的命令,我想得到 my_key

这是一个非常复杂的文件,你可以看到每一行都有一些内部数组和字典。我尝试使用一些命令,例如new_line = dict(item.split("=") for item in line.split(","))new_line = ast.literal_eval(line),但我得到了错误,因为例如对于第一个命令,因为内部数组中有很多,,我没有很好地分离主字典项目或第二个命令我收到此错误:

ValueError: malformed string

【问题讨论】:

  • 您的示例不包含等号。你能发布实际文件的样子吗?为什么你的文件包含OrderedDict
  • 您的文件似乎包含 Python 代码。逐行评估或将其作为模块加载。
  • 我已经使用脚本生成了我的有序字典,然后我将字典保存在文件中。现在我想解析文件。每一行的内容都很大,这里不能全部发完。

标签: python arrays file dictionary type-conversion


【解决方案1】:

您似乎已经尝试eval 行,但它在这部分格式错误:'innerarray: ['one', 'two'] 您甚至可以从代码的突出显示中看出'innerarray 之后缺少撇号

如果文件是由脚本创建的,则可能意味着其他行中存在类似的错误,但如果文件是手动创建的,则可能是唯一的错误,或者可能是导致此错误的任意数量的错误组合发生

我建议要么分享这个文件是如何创建的(因为它的创建出了问题)或者只是手动修复文件

【讨论】:

  • 我已经通过脚本创建了文件。我刚刚将我的字典保存在文件中,现在我想解析它。刚刚在此处复制粘贴文件内容时发生了内部数组错误。
  • 我认为您的行中还有一些其他错误,它的末尾肯定缺少括号...我建议您粘贴实际的完整行或将问题改写为: “如何将复杂的python数据结构保存和加载到文件”
  • 我做到了。谢谢。
猜你喜欢
  • 2022-11-16
  • 2014-04-09
  • 1970-01-01
  • 2020-02-20
  • 2013-03-27
  • 1970-01-01
  • 2022-08-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多