【问题标题】:Convert Dictionary to String and back in python将字典转换为字符串并返回 python
【发布时间】:2018-04-17 04:31:30
【问题描述】:

我正在将字典写入文件以保存存储在其中的数据。当我读取文件并尝试将其转换回来时,它会转换为列表。我添加了 print(type()) 以查看它进入文件的类型以及它的输出时间。

    import ast
    f = open("testfile.txt", "a+")
    print (type(dic1))
    f.write(str(dic1.items()) + "\n")
    f.close()

这是我将它写入文件

    ([('people', '1'), ('date', '01/01/1970'), ('t0', 'epoch'), ('time', '0'), ('p0', 'Tim Berners-Lee'), ('memory', 'This is the day time was created')])

这是书面文件中的样子。

    loadDict = ast.literal_eval(x)
    print (type(loadDict))

这是尝试转换回字典时的代码

【问题讨论】:

  • 要将字典写入文件,使用json.dumpjson.load 会更容易

标签: string python-3.x dictionary abstract-syntax-tree


【解决方案1】:

尝试使用pickle,它是存储和加载python对象的首选方式:

存储:

import pickle 
with open("testfile.txt", "w+") as f:
    pickle.dump(dic1,f)

加载:

import pickle 
with open("testfile.txt", "r+") as f:
    dic1 = pickle.load(f)

如果你想在一个列表中保存多个对象,你可以将一个列表保存到文件中,然后从文件中加载列表,添加你想要添加的内容,然后再次保存

【讨论】:

  • 请注意,酸洗是特定于版本的。因此,请确保您使用相同的设置进行读写。
  • @AntiMatterDynamite 当我使用 pickle 时,我必须将其加载为 wb 和 rb。此外,当我尝试使用 pickle 加载它时,它仍然将其作为列表而不是字典读取。我收到此错误 _pickle.UnpicklingError: invalid load key, '['.
  • @CarlosO'gorman 你需要用pickle保存它才能用pickle加载它你不能用pickle加载任何文件
猜你喜欢
  • 1970-01-01
  • 2021-08-16
  • 2018-05-19
  • 2013-03-13
  • 2017-03-23
  • 1970-01-01
  • 1970-01-01
  • 2011-02-02
  • 1970-01-01
相关资源
最近更新 更多