python解析json串与正则匹配对比方法


Posted in Python onDecember 20, 2018

现在有如下格式的json串:

“detail_time”:”2016-03-30 16:00:00”,”device_id”:”123456”,”os”:”Html5Wap”,”session_flow_id”:”1d1819f3-8e19-4597-b50d-ba379adcd8e5”,”user_longitude”:0.0000,”user_latitude”:0.0000,”search_id”:xxx,”search_guid”:-543326548,”search_type”:7,”AAA”:4,”BBB”:-1,”CCC”:[],”DDD”:3,”EEE”:2,”FFF”:1459267200,”GGG”:1459353600,”aaa”:90954603,”bbb”:[{“xxx”:1500848,”x”:1,”bf”:0,”pp”:2,”sroom”:2,”ppp”:108,”cost”:97.2,”coupon”:108,”drr”:108},{“xxx”:1500851,”x”:1,”bf”:0,”pp”:1,”sroom”:2,”ppp”:108,”cost”:97.2,”coupon”:108,”drr”:108},{“xxx”:2336691,”x”:1,”bf”:1,”pp”:1,”sroom”:3,”ppp”:199,”cost”:169.15,”coupon”:191,”drr”:199},{“xxx”:2336692,”x”:1,”bf”:1,”pp”:2,”sroom”:4,”ppp”:102,”cost”:91.8,”coupon”:102,”drr”:102},{“xxx”:1500848,”x”:1,”bf”:0,”pp”:2,”sroom”:3,”ppp”:118,”cost”:106.2,”coupon”:118,”drr”:118},{“xxx”:1500851,”x”:1,”bf”:0,”pp”:1,”sroom”:3,”ppp”:118,”cost”:106.2,”coupon”:118,”drr”:118},{“xxx”:2336693,”x”:1,”bf”:1,”pp”:1,”sroom”:5,”ppp”:199,”cost”:169.15,”coupon”:191,”drr”:199},{“xxx”:2336694,”x”:1,”bf”:1,”pp”:2,”sroom”:6,”ppp”:112,”cost”:100.3,”coupon”:112,”drr”:112},{“xxx”:1500848,”x”:1,”bf”:0,”pp”:2,”sroom”:1,”ppp”:98,”cost”:88.2,”coupon”:98,”drr”:98},{“xxx”:1500851,”x”:1,”bf”:0,”pp”:1,”sroom”:1,”ppp”:98,”cost”:88.2,”coupon”:98,”drr”:98},{“xxx”:2336687,”x”:1,”bf”:1,”pp”:1,”sroom”:1,”ppp”:189,”cost”:160.65,”coupon”:182,”drr”:189},{“xxx”:2336689,”x”:1,”bf”:1,”pp”:2,”sroom”:2,”ppp”:93,”cost”:83.3,”coupon”:93,”drr”:93},{“xxx”:1500848,”x”:1,”bf”:0,”pp”:2,”sroom”:4,”ppp”:128,”cost”:115.2,”coupon”:128,”drr”:128},{“xxx”:1500851,”x”:1,”bf”:0,”pp”:1,”sroom”:4,”ppp”:128,”cost”:115.2,”coupon”:128,”drr”:128},{“xxx”:2336695,”x”:1,”bf”:1,”pp”:1,”sroom”:7,”ppp”:239,”cost”:203.15,”coupon”:230,”drr”:239},{“xxx”:2336696,”x”:1,”bf”:1,”pp”:2,”sroom”:8,”ppp”:121,”cost”:108.8,”coupon”:121,”drr”:121}],”ppp_min”:93.00,”ppp_max”:239.00,”ppp_avg”:134.88,”ppp_med”:118.00,”ppp_min_cost”:83.30,”ppp_min_promotion_type”:-1,”ppp_min_promotion_amount”:-1,”bf_ppp_min”:149.00,”bf_ppp_min_cost”:83.30,”bf_ppp_min_promotion_type”:-1,”bf_ppp_min_promotion_amount”:-1}

现在想拿到device_id的具体值。最简单的方式就是用解析json串的方式得到,代码如下:

#!/usr/bin/env python
#coding:utf-8

import json
import sys
import collections
import time

def t1():
 start = time.clock()
 for line in sys.stdin:
  try:
   line = line.strip()
   decoded = json.loads(line)
   device_id = decoded["device_id"]
   print device_id
  except Exception,ex:
   pass

 end = time.clock()
 print "The cost time is: %f" %(end - start)

t1()

以上代码能顺利完成任务。

不幸的是,现在是大数据时代,数据量嘛,自然都很大。用了一万条数据做测试,耗时达到了惊人的。。。将近10s。

转换下思路,采用正则匹配的方式

#!/usr/bin/env python

import re
import sys
import time

def t1():
 start = time.clock()
 count = 0
 for line in sys.stdin:
  line = line.strip()
  pattern = re.compile("(?:\"device_id\":\")([^\"]+)")
  search = pattern.search(line)
  if search:
   count += 1
   #print search.groups()[0]
 end = time.clock()
 print "The count is: %d" %(count)
 print "The cost time is: %f" %(end - start)

t1()

注意匹配的时候

re.compile("(?:\"device_id\":\")([^\"]+)")

第一个分组表示不捕获,只捕获后面的分组。

同样一万条数据,运行耗时是。。。0.05s。效率提高了多少倍,表示算不过来了。

以上这篇python解析json串与正则匹配对比方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现批量将word转html并将html内容发布至网站的方法
Jul 14 Python
python中reload(module)的用法示例详解
Sep 15 Python
python输入错误密码用户锁定实现方法
Nov 27 Python
详解Python中where()函数的用法
Mar 27 Python
django启动uwsgi报错的解决方法
Apr 08 Python
python numpy实现文件存取的示例代码
May 26 Python
对tensorflow中cifar-10文档的Read操作详解
Feb 10 Python
三步解决python PermissionError: [WinError 5]拒绝访问的情况
Apr 22 Python
Python新手学习标准库模块命名
May 29 Python
python中绕过反爬虫的方法总结
Nov 25 Python
如何用Python和JS实现的Web SSH工具
Feb 23 Python
python利用pandas分析学生期末成绩实例代码
Jul 09 Python
Django2.1集成xadmin管理后台所遇到的错误集锦(填坑)
Dec 20 #Python
python将一个英文语句以单词为单位逆序排放的方法
Dec 20 #Python
Python给定一个句子倒序输出单词以及字母的方法
Dec 20 #Python
python 读取竖线分隔符的文本方法
Dec 20 #Python
python读取txt文件,去掉空格计算每行长度的方法
Dec 20 #Python
python 实现将txt文件多行合并为一行并将中间的空格去掉方法
Dec 20 #Python
Python 判断奇数偶数的方法
Dec 20 #Python
You might like
比特率,大家看看这个就不用收音机音质去比MP3音质了
2021/03/01 无线电
Yii2分页的使用及其扩展方法详解
2016/05/23 PHP
php微信开发接入
2016/08/27 PHP
PhpStorm配置Xdebug调试的方法步骤
2019/02/02 PHP
Js-$.extend扩展方法使方法参数更灵活
2013/01/15 Javascript
IE8下String的Trim()方法失效的解决方法
2013/11/08 Javascript
整理的比较全的event对像在ie与firefox浏览器中的区别
2013/11/25 Javascript
jQuery实现dialog设置focus焦点的方法
2015/06/10 Javascript
ES6中非常实用的新特性介绍
2016/03/10 Javascript
Bootstrap滚动监听(Scrollspy)插件详解
2016/04/26 Javascript
AngularJs表单验证实例代码解析
2016/11/29 Javascript
BootStrap 下拉菜单点击之后不会出现下拉菜单(下拉菜单不弹出)的解决方案
2016/12/14 Javascript
vue集成openlayers加载geojson并实现点击弹窗教程
2020/09/24 Javascript
基于Python实现的扫雷游戏实例代码
2014/08/01 Python
python中(str,list,tuple)基础知识汇总
2018/02/20 Python
python 函数的缺省参数使用注意事项分析
2019/09/17 Python
python绘图pyecharts+pandas的使用详解
2020/12/13 Python
python批量提取图片信息并保存的实现
2021/02/05 Python
GLAMGLOW香港官网:明星出镜前的秘密武器
2017/03/16 全球购物
Sneaker Studio匈牙利:购买运动鞋
2018/03/26 全球购物
法国在线购买汽车轮胎网站:123pneus.fr
2019/02/25 全球购物
澳大利亚和新西兰最大的在线旅行社之一:Aunt Betty
2019/08/07 全球购物
南京迈特望C/C++面试题
2012/07/09 面试题
JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?
2013/07/02 面试题
小学国庆节活动方案
2014/02/11 职场文书
施工员岗位职责
2014/03/16 职场文书
校园文明倡议书
2014/05/16 职场文书
2014年全国法制宣传日宣传活动方案
2014/11/02 职场文书
2014年党的群众路线学习心得体会
2014/11/05 职场文书
党员考试作弊检讨书1000字
2015/02/16 职场文书
2015纪念九一八事变84周年演讲稿
2015/03/19 职场文书
导游词之广州陈家祠
2019/10/21 职场文书
分析Python list操作为什么会错误
2021/11/17 Python
Innodb存储引擎中的后台线程详解
2022/04/03 MySQL
默认网关不可用修复后过一会又不好使了解决方法
2022/04/08 数码科技
聊聊配置 Nginx 访问与错误日志的问题
2022/05/25 Servers