我嵌套了标记为“书籍”的数据,如下所示,
book0 = {'authorId': u'4657987','bookId': u'3532901',
'genre': u'horror','freeChapters': [[u'2015-07-03 15:14:25', u'3376'],
[u'2015-07-03 17:52:39', u'2116'],...,[u'2015-07-26 20:08:11', u'2120'],
[u'2015-07-27 20:12:12', u'2139']],'updateStatus': u'to be continued',
'wordCount': u'56322'}
book1 = {'authorId': u'3840480','bookId': u'3453158',
'genre': u'romance','freeChapters': [[u'2015-04-07 18:58:15', u'317'],
[u'2015-04-02 21:46:36', u'2103'],
[u'2015-04-03 13:02:17', u'2416'], ...,
[u'2015-07-24 00:07:43', u'2195']],'updateStatus': u'completed',
'chargedChapters': [[u'2015-07-25 14:14:53', u'10'],
[u'2015-07-26 00:07:46', u'11'],
[u'2015-07-27 00:07:58', u'10'],
[u'2015-07-28 00:07:52', u'10']],
'wordCount': u'269059'}
...
我预计会有大约 200,000 个这样的对象,每个对象都是从互联网上抓取的。鉴于每本书都需要花费一些精力和时间,我想将它们一一保存下来。我认为 JSON 不允许我这样做,而且我目前正在使用 pickle。然而,稍后我可能需要引用某本书。我担心我必须一遍又一遍地解泡才能做到这一点。就我而言,存储这些对象的最佳方式是什么?
我最终选择了行分隔的 JSON。
最佳答案
政治正确的答案是“视情况而定”。也就是说,请使用 JSON
。
Pickle
是一种功能强大的格式,能够重建丰富数据类型的复杂对象。然而,它相对较慢,它将您与 python 绑定(bind)在一起,并且对于不受信任的数据并不是 100% 安全。 它提供了丰富的打字功能,但不具备速度、便携性或安全性。它也人类不可读。
XML
是一种旧格式,即将不再使用。它不直接映射到面向对象的设计。在大多数现代语言中读取和写入 XML
都是繁琐、冗长的,并且会产生令人不安的抽象。 现在使用 XML 的理由很少。
JSON
是一种得到广泛采用的轻量级格式。它提供有限的数据类型(例如缺少日期)。这意味着字符串化很多类型,但也意味着格式相对安全:不受信任的数据不会让您感到惊讶。它快速、高度便携且易于阅读。它几乎直接映射到面向对象的设计。有许多用于处理 JSON 的库和工具,这意味着它可以轻松转换为其他格式。
JSON
是默认选择。除非有理由避免它,否则就使用它。无论如何,您都可以从 JSON
开始,然后再切换。
关于python - 如何在Python中存储嵌套数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31666456/