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 cookielib 登录人人网的实现代码
Dec 19 Python
Python3.5编程实现修改IIS WEB.CONFIG的方法示例
Aug 18 Python
浅谈利用numpy对矩阵进行归一化处理的方法
Jul 11 Python
在ubuntu16.04中将python3设置为默认的命令写法
Oct 31 Python
Centos部署django服务nginx+uwsgi的方法
Jan 02 Python
Python基于plotly模块实现的画图操作示例
Jan 23 Python
Django网络框架之HelloDjango项目创建教程
Jun 06 Python
python字典嵌套字典的情况下找到某个key的value详解
Jul 10 Python
python实现kNN算法识别手写体数字的示例代码
Aug 16 Python
使用Python给头像加上圣诞帽或圣诞老人小图标附源码
Dec 25 Python
Python3 shutil(高级文件操作模块)实例用法总结
Feb 19 Python
15款Python编辑器的优缺点,别再问我“选什么编辑器”啦
Oct 19 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
在普通HTTP上安全地传输密码
2007/07/21 PHP
一个简单php扩展介绍与开发教程
2010/08/19 PHP
php更改目录及子目录下所有的文件后缀的代码
2010/09/24 PHP
基于PHP生成静态页的实现方法
2013/05/10 PHP
完美的2个php检测字符串是否是utf-8编码函数分享
2014/07/28 PHP
学习php设计模式 php实现观察者模式(Observer)
2015/12/09 PHP
PHP学习笔记之session
2018/05/06 PHP
Laravel框架控制器的request与response用法示例
2019/09/30 PHP
心扬JS分页函数代码
2010/09/10 Javascript
javascript 正则表达式相关应介绍
2012/11/27 Javascript
JavaScript在网页中画圆的函数arc使用方法
2015/11/13 Javascript
js中用cssText设置css样式的简单方法
2016/09/19 Javascript
jQuery checkbox选中问题之prop与attr注意点分析
2016/11/15 Javascript
JS 数组随机洗牌的实例代码
2018/09/12 Javascript
es6中比较有用的7个技巧小结
2019/07/12 Javascript
nuxt踩坑之Vuex状态树的模块方式使用详解
2019/09/06 Javascript
JS实现音量控制拖动
2020/01/15 Javascript
python 判断自定义对象类型
2009/03/21 Python
解决PyCharm中光标变粗的问题
2017/08/05 Python
python中从str中提取元素到list以及将list转换为str的方法
2018/06/26 Python
对python csv模块配置分隔符和引用符详解
2018/12/12 Python
python3实现带多张图片、附件的邮件发送
2019/08/10 Python
Python开发之pip安装及使用方法详解
2020/02/21 Python
Python新建项目自动添加介绍和utf-8编码的方法
2020/12/26 Python
用HTML5.0制作网页的教程
2010/05/30 HTML / CSS
html5通过canvas实现刮刮卡效果示例分享
2014/01/27 HTML / CSS
美术专业学生个人自我评价
2013/09/19 职场文书
实习生自荐信范文
2013/11/13 职场文书
军训自我鉴定
2014/01/22 职场文书
家长会学生演讲稿
2014/04/26 职场文书
初中政教处工作总结
2015/08/12 职场文书
中学生打架《检讨书》范文
2019/08/12 职场文书
Python中Cookies导出某站用户数据的方法
2021/05/17 Python
使用这 6个Vue加载动画库来减少我们网站的跳出率
2021/05/18 Vue.js
python 字典和列表嵌套用法详解
2021/06/29 Python
python如何读取和存储dict()与.json格式文件
2022/06/25 Python