哪种方法更快,使用 JSON 解析器(python 2.6)或正则表达式获取相关数据。由于数据量巨大,我认为使用一种方法与其他方法相比在时间上会有很大差异。
最佳答案
假设你在问什么......
我相信您是在问通过反序列化从序列化的 JSON 字符串中获取信息或通过正则表达式搜索相关匹配是否更快。
快速回答
根据我在序列化 JSON 中的事件流对象(推文、转推或引用)中寻找单个键值对的非官方经验,使用正则表达式比解析整个 JSON 对象更好。
为什么?
这是因为推文相当大,当您处理成千上万条推文时,反序列化整个 JSON 字符串并随机访问生成的 JSON 对象对于单个键值对,就像用大锤敲螺母一样。
潜在的漏洞...
然而,当键在不同的嵌套级别重复时,问题就出现了。
例如,引用有一个名为 twitter_quoted_status
的根级属性,其中包含此引用对象引用的推文的副本。
这意味着如果您使用正则表达式搜索序列化引用对象,则推文和引用共享的任何属性名称将返回至少 2 个匹配项。
因为你不能也不应该依赖 JSON 对象中属性顺序的可靠性(字典键应该是无序的!),你甚至不能依赖你想要的匹配是第一个或第二个(或其他)匹配,如果你到目前为止已经识别出该模式。
目前我唯一可以与您分享的证据是,要从 100,000 个原始推文对象(没有引号或转推)中检索单个键值对,我的桌面在使用反序列化时往往需要 8-14 秒方法,使用正则表达式时为 0-2。
免责声明
数字是近似值,来自内存。抱歉,我只是提供了一个快速的答案,我现在没有工具来测试这个并发布结果供我使用。
关于python - 处理推文时使用 JSON 或正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21808913/