【问题标题】:Read list of lists of tuples in Python from file从文件中读取 Python 中的元组列表列表
【发布时间】:2016-10-16 20:08:16
【问题描述】:

我想从文件中读取和写入元组列表的列表。

g_faces = [[(3,2)(3,5)],[(2,4)(1,3)(1,3)],[(1,2),(3,4),(6,7)]]

我用过

  • pickle.dump(g_faces, fp)
  • pickle.load(fp)

但该文件不是人类可读的。有什么简单的方法吗?

【问题讨论】:

  • “该文件不是人类可读的” - 那又怎样?它不应该是。
  • 你可以使用json,它使用相同的界面或eval,如果你够勇敢的话。如果您使用json,则必须在格式上做出一些妥协。

标签: python serialization pickle


【解决方案1】:

试试 json 模块。

import json

g_faces = [[(3,2), (3,5)],[(2,4), (1,3), (1,3)],[(1,2), (3,4), (6,7)]]

json.dump(g_faces, open('test.json', 'w'))

g_faces = json.load(open('test.json'))

# cast back to tuples
g_faces = [[tuple(l) for l in L] for L in g_faces]

【讨论】:

  • 请注意,JSON 无法区分列表和元组(两者都被序列化为 JSON 数组),因此结果将包含 所有 个列表。
  • @jonrsharpe 好点。 OP 要求提供元组列表。
  • 它告诉我:TypeError: <_io.textiowrapper name="test.json" mode="w" encoding="cp1252"> is not JSON serializable
  • @MarioStefanutti 我在dump 方法中交换了参数的顺序。代码已更正。
  • @MarioStefanutti 您可以在阅读后将其转换为元组。如上所述,json 将始终将元组转换为列表。
猜你喜欢
  • 2012-05-04
  • 1970-01-01
  • 1970-01-01
  • 2020-02-25
  • 1970-01-01
  • 2017-08-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多