【问题标题】:What is the preferred way to handle data in Python?在 Python 中处理数据的首选方式是什么?
【发布时间】:2015-10-24 08:47:22
【问题描述】:

我有大约 30 个列表,一些字典,其中大多数至少包含 200 个项目,整数和字符串。

使用 selenium 和 beautiful soup 抓取数据以解析 html,然后将其分离为名称/值列表、站点刷新并重复该过程。

在发生这种情况时,我正在执行函数将这些名称/值处理为平均值、随时间的变化率,然后将其与之前的结果进行比较。

目前,这一切都只是存储在我的 python 脚本中的内存中。我已经研究过使用 csv 文件来存储和检索数据,或者使用 sqlite 数据库/甚至在内存中使用 sqlite 数据库,但不知道这些选项有多快/慢。

任何建议将不胜感激!

【问题讨论】:

  • 要使用的解决方案取决于您在问题中未指定的约束,以及存储的数据打算在以后如何使用的具体细节。如所写,您的问题主要是基于意见的。可以使用 CSV 吗?是的。 SQL 数据库?是的。泡菜?是的。 JSON转储?是的。
  • 数据基本上一抓到就被消耗掉,我说我觉得?我只是担心内存存储的上限以及是否应该做其他事情,或者更确切地说,我的计算机在什么时候无法处理内存中的这么多数据!
  • 来自我的评论“具体详情”。说“数据基本上一被捕获就被消耗”根本不具体。
  • 好的 - 每 10 秒捕获一个新的价格列表,并进行处理等等,相对于前 10 秒的数据,一分钟后它会重复,原始的 6 x 10 秒捕获被新值覆盖。几乎没有数据保留时间超过一次约 5 分钟

标签: python python-3.x selenium


【解决方案1】:

您说您的数据主要是ListsDicts,那么我的选择是使用JSON

JSON 非常适合 key-value 对,它最初就是为此目的而制作的。

使用json 模块很容易序列化或解码JSON。

序列化 JSON 示例

>>> import json
>>> json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')
['foo', {'bar': ['baz', None, 1.0, 2]}]

listdict 编码为 JSON 的示例

>>> import json
>>> json.dumps([1,2,3,{'4': 5, '6': 7}], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'

更多文档请访问:

https://docs.python.org/3.5/library/json.html

【讨论】:

    猜你喜欢
    • 2011-10-18
    • 2012-08-10
    • 1970-01-01
    • 2011-11-07
    • 1970-01-01
    • 1970-01-01
    • 2010-10-11
    • 2010-10-10
    • 2014-09-16
    相关资源
    最近更新 更多