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 Django模板的使用方法
Jan 14 Python
Python实现模拟分割大文件及多线程处理的方法
Oct 10 Python
python简易远程控制单线程版
Jun 20 Python
Python微医挂号网医生数据抓取
Jan 24 Python
python tkinter canvas 显示图片的示例
Jun 13 Python
解决pycharm 远程调试 上传 helpers 卡住的问题
Jun 27 Python
Python Numpy计算各类距离的方法
Jul 05 Python
python 利用pywifi模块实现连接网络破解wifi密码实时监控网络
Sep 16 Python
python实现名片管理器的示例代码
Dec 17 Python
python判断两个序列的成员是否一样的实例代码
Mar 01 Python
解决python ThreadPoolExecutor 线程池中的异常捕获问题
Apr 08 Python
Jupyter加载文件的实现方法
Apr 14 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
PHP设计聊天室步步通
2006/10/09 PHP
PHP无限分类的类
2007/01/02 PHP
php中使用DOM类读取XML文件的实现代码
2011/12/14 PHP
PHP读取文件内容后清空文件示例代码
2014/03/18 PHP
在Mac上编译安装PHP7的开发环境
2015/07/28 PHP
php使用环形链表解决约瑟夫问题完整示例
2018/08/07 PHP
php微信公众号开发之音乐信息
2018/10/20 PHP
stripos函数知识点实例分享
2019/02/11 PHP
JavaScript 精粹读书笔记(1,2)
2010/02/07 Javascript
JavaScript正则表达式之multiline属性的应用
2015/06/16 Javascript
JavaScript使用DeviceOne开发实战(三)仿微信应用
2015/12/02 Javascript
使用jQuery在移动页面上添加按钮和给按钮添加图标
2015/12/04 Javascript
jQuery简单实现列表隐藏和显示效果示例
2016/09/12 Javascript
vue自定义指令实现v-tap插件
2016/11/03 Javascript
js实现仿购物车加减效果
2017/03/01 Javascript
ES6教程之for循环和Map,Set用法分析
2017/04/10 Javascript
VUE + UEditor 单图片跨域上传功能的实现方法
2018/02/08 Javascript
jQuery事件多次绑定与解绑问题实例分析
2019/02/19 jQuery
jQuery单页面文字搜索插件jquery.fullsearch.js的使用方法
2020/02/04 jQuery
基于javascript处理二进制图片流过程详解
2020/06/08 Javascript
Python实现屏幕截图的代码及函数详解
2016/10/01 Python
ubuntu中配置pyqt4环境教程
2017/12/27 Python
python3学习笔记之多进程分布式小例子
2018/02/13 Python
Python实现的根据IP地址计算子网掩码位数功能示例
2018/05/23 Python
Python写一个基于MD5的文件监听程序
2019/03/11 Python
OpenCV HSV颜色识别及HSV基本颜色分量范围
2019/03/22 Python
python使用pygame模块实现坦克大战游戏
2020/03/25 Python
python中 * 的用法详解
2019/07/10 Python
使用CSS3在触屏上为按钮实现激活效果
2013/09/27 HTML / CSS
阿迪达斯希腊官方网上商店:adidas希腊
2019/04/06 全球购物
《难忘的泼水节》教学反思
2014/02/27 职场文书
学校庆元旦歌咏比赛主持词
2014/03/18 职场文书
2014年内勤工作总结
2014/11/24 职场文书
2014年社区卫生工作总结
2014/12/18 职场文书
2015年国庆放假通知范文
2015/08/18 职场文书
八年级作文之感悟亲情
2019/11/20 职场文书