本文介绍一个示例:使用 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并比较两个字符串相似度的简单示例相关推荐

  1. php 字符串分割成两段,php 两个字符串分割合并的简单示例

    搜索热词 把两个字符串进行分割合并,例如str1=aaaa,str2=bbbb,合并后生成abababab,PHP分割合并两个字符串的函数,感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编来 ...

  2. python连接mongodb的库文件pymongo

    安装python连接mongodb的库文件pymongo # wget http://pypi.python.org/packages/source/p/pymongo/pymongo-2.6.tar ...

  3. python连接mongodb数据库密码_windows下mongodb设置用户名密码用python连接

    环境: 主机:WIN10 python版本:3.5 mongodb版本:3.4.2 开发环境:pyCharm mongodb设置用户名密码: 编写mongodb配置文件mongodb.conf dbp ...

  4. similartext php,使用PHPsimilartext计算两个字符串相似度,similartext_PHP教程

    使用PHP similar text计算两个字符串相似度,similartext 在网站开发中,我们经常使用php similar text 计算两个字符串相似度; 1,similar_text的用法 ...

  5. php字符串分隔函数,php字符串分割函数的简单示例

    这篇文章主要为大家详细介绍了php字符串分割函数的简单示例,具有一定的参考价值,可以用来参考一下. 对php字符串分割函数感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! php中 exp ...

  6. python比较两个字符串相似度_详解Python 字符串相似性的几种度量方法

    字符串的相似性比较应用场合很多,像拼写纠错.文本去重.上下文相似性等. 评价字符串相似度最常见的办法就是:把一个字符串通过插入.删除或替换这样的编辑操作,变成另外一个字符串,所需要的最少编辑次数,这种 ...

  7. python 连接mongodb查询数据

     1.安装pymongo并引入 pip install pymongo 连接MongoDB时,需要使用PyMongo库里面的MongoClient. 2.连接mongoDB 一般来说,传入MongoD ...

  8. python连接mongodb数据库、创建用户_mongodb对数据库创建用户名和密码

    MongoDB 有一个用户管理机制,简单描述为管理用户组,这个组的用户是专门为管理普通用户而设的,暂且称之为管理员.管理员通常没有数据库的读写权限,只有操作用户的权限,我们只需要赋予管理员 userA ...

  9. python判断天数_Python计算两个日期相差天数的方法示例

    本文实例讲述了Python计算两个日期相差天数的方法.分享给大家供大家参考,具体如下: #!/usr/bin/python import time import sys def dateinput() ...

最新文章

  1. 是什么岗位_文案策划的岗位职责是什么?
  2. 邓林权:组队学习的那些事
  3. 开放一些3D视觉相关职位!
  4. 解读:欧盟委员会2021年《人工智能法》提案
  5. 第15章 关于本软件
  6. pytorch图像和张量的相互转换_[Pytorch]Pytorch的tensor变量类型转换
  7. python csv数据处理_python处理csv数据的方法
  8. .net获取地址栏中的url
  9. centos7 设置ip地址
  10. linux添加cmd命令行参数,Windows 终端命令行参数 | Microsoft Docs
  11. c语言 map转换成字符串数组,JSON数组形式字符串转换为ListMapString,String的几种方法...
  12. android 特效绘图,Android绘图机制与处理技巧——Android图像处理之图形特效处理...
  13. vim 编程常用的指令和快捷键
  14. const修饰是指针和常量
  15. 计算机专业毕业设计题目大全
  16. C# Winform开发人脸识别小程序 (基于百度接口)
  17. 展视互动签约新华网 创在线教育新蓝图
  18. 系统集成方案(一).NET集成方案
  19. 网红前端盼哥模拟面试总结
  20. 数据增强——基本方法

热门文章

  1. @cacheable 是否缓存成功_缓存策略:如何使用缓存来减少磁盘IO?
  2. 深度学习pytorch--多层感知机(一)
  3. php通过ajax下载文件,通过ajax调用php下载文件
  4. 机智云代码移植_IoT开发者 | 基于STM32F103的机智云宠物屋外加4路继电器开源教程...
  5. 计算机网络技术教法改革方案,计算机网络技术专业教学模式改革探索
  6. python怎么查询元素是否在列表中_python怎么判断某一元素是否在列表中
  7. 易语言 网页用什么编码_通常提到的编码器是干什么用的
  8. android math类,GitHub - Zihin/MathModeling-Android
  9. 从数据的角度解析计算机的发展,2017计算机知识考前冲刺试题及答案
  10. linux wordpress伪静态,wordpress程序在win和Linux系统下的伪静态设置 - 张力博客