python - 处理推文时使用 JSON 或正则表达式

标签 python regex json python-2.6

哪种方法更快,使用 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/

相关文章:

python - comb : any value above 40 returns infinity? 不知道为什么

python - 如何正确设置 pandas.Dataframe 中特定单元格的值?

objective-c - Encoding ™ £ 用于 JSON - 使用 objective-c

c# - Newtonsoft.Json 是否转义所有字符?

ios - 如何解析 JSON 字典并将键和值放在单独的数组中 - Objective C

python - 如何从 Python 中的字典创建 igraph 对象

python - tkinter 照片图像构造函数

java - 正则表达式验证仅适用于一个字符

c# - 不匹配带有开头双引号的 YouTube 网址 - C# Regex

java - 匹配(例如)Unicode 字母与 Java 正则表达式