python正则表达式,提取命中mongo中的数据
2017-12-22 18:13
441 查看
Mongo与Mysql以及sql server都是提供命令行检索方式的。那么问题来了,我们为什么还要使用Python去连接、访问以及操作这些数据库呢?
原因有很多,其中较为重要的一点是python是检索并连接数据库(诸如,Mongo/Mysql/Sql server等)与外部文件系统(诸如,csv/excel/json/txt等)的桥梁。
1.连接数据库
使用起来简单方便,使用的是python中的MongoClient包。如果你机器上没有安装,就使用pip install MongoClient安装一下。
给出数据库存储机器的ip,端口号。MongoDB默认的端口号是27017。
这里访问数据库data,可以直接在连接的时候通过方括号访问。
其实,你只要会python,只要连上了数据库,根本无需知道MongoDB自带的一些查询命令就可以轻松使用该数据库。只要这句:
这条语句是是无条件查询并返回mongodb中的concise这个collection内所有的记录。这个返回值是以字典的形式return的,接下来的许多操作,本质上都是python操作字典这个数据结构。
2.正则表达式进行模糊匹配
正则表达式本身功能非常强大,也不是几句话,几次实践就能全部了解的。结合工作中常用到的功能给大家简单举个例子。
比如我们的诉求是找出包含了一下关键词的记录,并打印命中的关键词。做法是
(1)构建一个正则模式pattern,这个模式的含义是中间是关键词组,不管两边是什么东西,都算是命中。
(2)用这个模式pattern去匹配字符串。可以想象一排抽屉摆在那里,你手里拿着一串钥匙(类比pattern)一个一个去试开,只要开开一个就算成功。
今天冬至了。晚上天儿真冷。
周五,下班回家。
2017/12/22
“数据分析师手记”微信公众号。欢迎关注
原因有很多,其中较为重要的一点是python是检索并连接数据库(诸如,Mongo/Mysql/Sql server等)与外部文件系统(诸如,csv/excel/json/txt等)的桥梁。
1.连接数据库
使用起来简单方便,使用的是python中的MongoClient包。如果你机器上没有安装,就使用pip install MongoClient安装一下。
给出数据库存储机器的ip,端口号。MongoDB默认的端口号是27017。
这里访问数据库data,可以直接在连接的时候通过方括号访问。
其实,你只要会python,只要连上了数据库,根本无需知道MongoDB自带的一些查询命令就可以轻松使用该数据库。只要这句:
for item in db.get_collection('concise').find():
这条语句是是无条件查询并返回mongodb中的concise这个collection内所有的记录。这个返回值是以字典的形式return的,接下来的许多操作,本质上都是python操作字典这个数据结构。
import pandas as pd import re from pymongo import MongoClient db = MongoClient('192.168.112.167',27017)['data'] data = [] for item in db.get_collection('concise').find(): new = {} aimed_Tag = set() for keyword in keywords: pattern = re.compile('.*'+keyword+'.*') if 'desc' in item and pattern.match(str(item['desc'])) is not None: aimed_Tag.add(keyword) elif 'tagset' in item and pattern.match(str(item['tagset'])) is not None: aimed_Tag.add(keyword) if len(aimed_Tag) > 0: new['_id'] = str(item['_id']) new['aimed_Tag'] = aimed_Tag data.append(new) print(len(data))
2.正则表达式进行模糊匹配
正则表达式本身功能非常强大,也不是几句话,几次实践就能全部了解的。结合工作中常用到的功能给大家简单举个例子。
比如我们的诉求是找出包含了一下关键词的记录,并打印命中的关键词。做法是
(1)构建一个正则模式pattern,这个模式的含义是中间是关键词组,不管两边是什么东西,都算是命中。
(2)用这个模式pattern去匹配字符串。可以想象一排抽屉摆在那里,你手里拿着一串钥匙(类比pattern)一个一个去试开,只要开开一个就算成功。
keywords = ['正义','民族','英雄','科学发展'] for keyword in keywords: pattern = re.compile('.*'+keyword+'.*') if pattern.match(str(item['desc'])) is not None: print(keyword) else: continue
今天冬至了。晚上天儿真冷。
周五,下班回家。
2017/12/22
“数据分析师手记”微信公众号。欢迎关注
相关文章推荐
- 【python学习笔记】用正则表达式从含中文的网页中提取数据(含编码转换)
- Google Python Class 之——正则表达式提取html网页数据字段
- Jmeter的正则表达式未正确提取数据
- Python 正则表达式提取URL中的USER
- Python网络爬虫与信息提取-Day12-Re(正则表达式)库入门
- python 根据正则表达式提取指定的内容实例详解
- python使用正则表达式提取html标签
- 利用正则表达式提取网页中Table内的数据
- 基于Python正则表达式提取搜索结果中的站点地址
- Python爬虫urllib2笔记(三)之使用正则表达式提取百度贴吧网页中的楼主发的图片
- python核心编程-正则表达式-产生测试数据
- python爬虫提取信息:正则表达式和xpath
- [python]根据正则表达式提取指定的内容
- 如何用Python Pandas以及正则表达式提取地址中的省份
- SQL Server 2005 正则表达式使模式匹配和数据提取变得更容易
- python爬虫里信息提取的核心方法: Beautifulsoup、Xpath和正则表达式
- python爬虫学习(1)--关于正则表达式输入和提取中文
- 【爬虫提取数据三板斧之一】正则表达式资料整理
- Python数据分析学习-re正则表达式模块
- python requests 和正则表达式提取贴吧图片