Python 连接MongoDB并比较两个字符串相似度的简单示例
本文介绍一个示例:使用 pymongo 连接 MongoDB,查询MongoDB中的 字符串 记录,并比较字符串之间的相似度。
一,Python连接MongoDB
大致步骤:创建MongoClient---> 获取 DataBase --->获取Collection,代码如下:
client = MongoClient(host="127.0.0.1", port=10001) db = client['database_name'] db.authenticate(name="user_name", password="password")
coll = db.get_collection("collection_name")
二,Python MongoDB 查询
以uid为条件进行查询。由于 collection_name 中定义了多个字段,这里只想返回 chat 字段的内容,并且不返回 _id 字段内容。故查询条件如下:(find方法的第一个参数指定查询的条件,第二个参数指定 待 返回的 字段)
coll.find({"uid": 123456789}, {"_id": 0, "chat": 1})
MongoDB查询返回的每一条记录都是一个 dict:{"chat":"这是一条发言内容"},再将之转化成 chats列表(list) 存储每一条发言内容:
list_chat = list(coll.find({"uid": 123456789}, {"_id": 0, "chat": 1}))chats = [d['chat'] for d in list_chat]
三,Python比较两个字符串的相似度
给定一个列表(list),列表中的每个元素都是一个字符串,计算列表中相邻两个元素的相似度。
#查找chats 列表 里面 相邻 字符串 之间的 相似度 def compute_similar():chats = uid_chats()for index in range(len(chats) - 1):ratios = similar_ratio(chats[index], chats[index+1])print(ratios)
具体的字符串相似度计算,由SequenceMatcher实现,它忽略了字符串中存在空格的情况。
#lambda 表达式表示忽略 “ ”(空格),空格不参与相似度地计算 SequenceMatcher(lambda x:x==" ", strA, strB).ratio()
四,判断 "nick"字段是否包含 emoji字符
打开Anaconda,安装 emoji 处理包
pip install emoji --upgrade
代码如下:
from pymongo import MongoClient import emojiclient = MongoClient(host="127.0.0.2", port=10001) db = client['db_name'] db.authenticate(name="user_name", password="xxxx") coll = db.get_collection("coll_name")def extract_emojis(str_chat):return ' '.join(c for c in str_chat if c in emoji.UNICODE_EMOJI)def uid_chats(uid):list_chat = list(coll.find({"uid": uid}, {"_id": 0, "nick": 1}))chats = [d['nick'] for d in list_chat]print(chats)return chatsif __name__ == "__main__":chatList = uid_chats(123456789)for chat in chatList:result = extract_emojis(chat)print(result)
五,完整代码
系统环境 pycharm2016.3 Anaconda3 Python3.6
from pymongo import MongoClient from difflib import SequenceMatcherclient = MongoClient(host="127.0.0.1", port=10001) db = client['database_name'] db.authenticate(name="user_name", password="password")coll = db.get_collection("collection_name")def uid_chats():list_chat = list(coll.find({"uid": 123456789}, {"_id": 0, "chat": 1}))chats = [d['chat'] for d in list_chat]print(chats)return chatsdef similar_ratio(strA, strB):return SequenceMatcher(lambda x:x==" ", strA, strB).ratio()#查找list里面相邻字符串之间的相似度 def compute_similar():chats = uid_chats()for index in range(len(chats) - 1):ratios = similar_ratio(chats[index], chats[index+1])print(ratios)if __name__ == "__main__":compute_similar()
原文:http://www.cnblogs.com/hapjin/p/7895027.html
转载于:https://www.cnblogs.com/hapjin/p/7895027.html
Python 连接MongoDB并比较两个字符串相似度的简单示例相关推荐
- php 字符串分割成两段,php 两个字符串分割合并的简单示例
搜索热词 把两个字符串进行分割合并,例如str1=aaaa,str2=bbbb,合并后生成abababab,PHP分割合并两个字符串的函数,感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编来 ...
- python连接mongodb的库文件pymongo
安装python连接mongodb的库文件pymongo # wget http://pypi.python.org/packages/source/p/pymongo/pymongo-2.6.tar ...
- python连接mongodb数据库密码_windows下mongodb设置用户名密码用python连接
环境: 主机:WIN10 python版本:3.5 mongodb版本:3.4.2 开发环境:pyCharm mongodb设置用户名密码: 编写mongodb配置文件mongodb.conf dbp ...
- similartext php,使用PHPsimilartext计算两个字符串相似度,similartext_PHP教程
使用PHP similar text计算两个字符串相似度,similartext 在网站开发中,我们经常使用php similar text 计算两个字符串相似度; 1,similar_text的用法 ...
- php字符串分隔函数,php字符串分割函数的简单示例
这篇文章主要为大家详细介绍了php字符串分割函数的简单示例,具有一定的参考价值,可以用来参考一下. 对php字符串分割函数感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! php中 exp ...
- python比较两个字符串相似度_详解Python 字符串相似性的几种度量方法
字符串的相似性比较应用场合很多,像拼写纠错.文本去重.上下文相似性等. 评价字符串相似度最常见的办法就是:把一个字符串通过插入.删除或替换这样的编辑操作,变成另外一个字符串,所需要的最少编辑次数,这种 ...
- python 连接mongodb查询数据
1.安装pymongo并引入 pip install pymongo 连接MongoDB时,需要使用PyMongo库里面的MongoClient. 2.连接mongoDB 一般来说,传入MongoD ...
- python连接mongodb数据库、创建用户_mongodb对数据库创建用户名和密码
MongoDB 有一个用户管理机制,简单描述为管理用户组,这个组的用户是专门为管理普通用户而设的,暂且称之为管理员.管理员通常没有数据库的读写权限,只有操作用户的权限,我们只需要赋予管理员 userA ...
- python判断天数_Python计算两个日期相差天数的方法示例
本文实例讲述了Python计算两个日期相差天数的方法.分享给大家供大家参考,具体如下: #!/usr/bin/python import time import sys def dateinput() ...
最新文章
- 是什么岗位_文案策划的岗位职责是什么?
- 邓林权:组队学习的那些事
- 开放一些3D视觉相关职位!
- 解读:欧盟委员会2021年《人工智能法》提案
- 第15章 关于本软件
- pytorch图像和张量的相互转换_[Pytorch]Pytorch的tensor变量类型转换
- python csv数据处理_python处理csv数据的方法
- .net获取地址栏中的url
- centos7 设置ip地址
- linux添加cmd命令行参数,Windows 终端命令行参数 | Microsoft Docs
- c语言 map转换成字符串数组,JSON数组形式字符串转换为ListMapString,String的几种方法...
- android 特效绘图,Android绘图机制与处理技巧——Android图像处理之图形特效处理...
- vim 编程常用的指令和快捷键
- const修饰是指针和常量
- 计算机专业毕业设计题目大全
- C# Winform开发人脸识别小程序 (基于百度接口)
- 展视互动签约新华网 创在线教育新蓝图
- 系统集成方案(一).NET集成方案
- 网红前端盼哥模拟面试总结
- 数据增强——基本方法
热门文章
- @cacheable 是否缓存成功_缓存策略:如何使用缓存来减少磁盘IO?
- 深度学习pytorch--多层感知机(一)
- php通过ajax下载文件,通过ajax调用php下载文件
- 机智云代码移植_IoT开发者 | 基于STM32F103的机智云宠物屋外加4路继电器开源教程...
- 计算机网络技术教法改革方案,计算机网络技术专业教学模式改革探索
- python怎么查询元素是否在列表中_python怎么判断某一元素是否在列表中
- 易语言 网页用什么编码_通常提到的编码器是干什么用的
- android math类,GitHub - Zihin/MathModeling-Android
- 从数据的角度解析计算机的发展,2017计算机知识考前冲刺试题及答案
- linux wordpress伪静态,wordpress程序在win和Linux系统下的伪静态设置 - 张力博客