本文介绍一个示例:使用 pymongo 连接 MongoDB,查询MongoDB中的 字符串 记录,并比较字符串之间的相似度。

一,Python连接MongoDB

大致步骤:创建MongoClient---> 获取 DataBase --->获取Collection,代码如下:

  1. client = MongoClient(host="127.0.0.1", port=10001)
  2. db = client['database_name']
  3. db.authenticate(name="user_name", password="password")
  1. coll = db.get_collection("collection_name")

二,Python MongoDB 查询

以uid为条件进行查询。由于 collection_name 中定义了多个字段,这里只想返回 chat 字段的内容,并且不返回 _id 字段内容。故查询条件如下:(find方法的第一个参数指定查询的条件,第二个参数指定 待 返回的 字段)

  1. coll.find({"uid": 123456789}, {"_id": 0, "chat": 1})

MongoDB查询返回的每一条记录都是一个 dict:{"chat":"这是一条发言内容"},再将之转化成 chats列表(list) 存储每一条发言内容:

  1. list_chat = list(coll.find({"uid": 123456789}, {"_id": 0, "chat": 1}))
  2. chats = [d['chat'] for d in list_chat]

三,Python比较两个字符串的相似度

给定一个列表(list),列表中的每个元素都是一个字符串,计算列表中相邻两个元素的相似度。

  1. #查找chats 列表 里面 相邻 字符串 之间的 相似度
  2. def compute_similar():
  3. chats = uid_chats()
  4. for index in range(len(chats) - 1):
  5. ratios = similar_ratio(chats[index], chats[index+1])
  6. print(ratios)

具体的字符串相似度计算,由SequenceMatcher实现,它忽略了字符串中存在空格的情况。

  1. #lambda 表达式表示忽略 “ ”(空格),空格不参与相似度地计算
  2. SequenceMatcher(lambda x:x==" ", strA, strB).ratio()

四,判断 "nick"字段是否包含 emoji字符

打开Anaconda,安装 emoji 处理包

  1. pip install emoji --upgrade

代码如下:

  1. from pymongo import MongoClient
  2. import emoji
  3.  
  4. client = MongoClient(host="127.0.0.2", port=10001)
  5. db = client['db_name']
  6. db.authenticate(name="user_name", password="xxxx")
  7. coll = db.get_collection("coll_name")
  8.  
  9. def extract_emojis(str_chat):
  10. return ' '.join(c for c in str_chat if c in emoji.UNICODE_EMOJI)
  11.  
  12. def uid_chats(uid):
  13. list_chat = list(coll.find({"uid": uid}, {"_id": 0, "nick": 1}))
  14. chats = [d['nick'] for d in list_chat]
  15. print(chats)
  16. return chats
  17.  
  18. if __name__ == "__main__":
  19. chatList = uid_chats(123456789)
  20. for chat in chatList:
  21. result = extract_emojis(chat)
  22. print(result)

五,完整代码

系统环境 pycharm2016.3  Anaconda3 Python3.6

  1. from pymongo import MongoClient
  2. from difflib import SequenceMatcher
  3.  
  4. client = MongoClient(host="127.0.0.1", port=10001)
  5. db = client['database_name']
  6. db.authenticate(name="user_name", password="password")
  7.  
  8. coll = db.get_collection("collection_name")
  9.  
  10. def uid_chats():
  11. list_chat = list(coll.find({"uid": 123456789}, {"_id": 0, "chat": 1}))
  12. chats = [d['chat'] for d in list_chat]
  13. print(chats)
  14. return chats
  15.  
  16. def similar_ratio(strA, strB):
  17. return SequenceMatcher(lambda x:x==" ", strA, strB).ratio()
  18.  
  19. #查找list里面相邻字符串之间的相似度
  20. def compute_similar():
  21. chats = uid_chats()
  22. for index in range(len(chats) - 1):
  23. ratios = similar_ratio(chats[index], chats[index+1])
  24. print(ratios)
  25.  
  26. if __name__ == "__main__":
  27. compute_similar()

原文:http://www.cnblogs.com/hapjin/p/7895027.html

Python 连接MongoDB并比较两个字符串相似度的简单示例的更多相关文章

  1. 爬虫入门【8】Python连接MongoDB的用法简介

    MongoDB的连接和数据存取 MongoDB是一种跨平台,面向文档的NoSQL数据库,提供高性能,高可用性并且易于扩展. 包含数据库,集合,文档等几个重要概念. 我们在这里不介绍MongoDB的特点 ...

  2. python学习--python 连接SQLServer数据库(两种方法)

    1. python 学习.安装教程参照: http://www.runoob.com/python/python-tutorial.html 2. 集成开发环境 JetBrains PyCharm C ...

  3. Python连接MongoDB数据库并执行操作

    原文:https://blog.51cto.com/1767340368/2092813 环境设置: [root@mongodb ~]# cat /etc/redhat-release CentOS ...

  4. 左手Mongodb右手Redis 通过python连接mongodb

    首先需要安装第三方包pymongo pip install pymongodb """ 通过python连接mongodb数据库 首先需要初始化数据库连接 "& ...

  5. python连接mongodb数据库

    之前使用过python连接mysql数据库(用到pymysql库),公司也有使用mongodb数据库,所以就整理了一份python连接mongodb数据库的代码出来,以供记录和分享. 首先我们要用到 ...

  6. MongoDB聚合查询及Python连接MongoDB操作

    今日内容概要 聚合查询 Python操作MongoDB 第三方可视化视图工具 今日内容详细 聚合查询 Python操作MongoDB 数据准备 from pymongo import MongoCli ...

  7. python连接MongoDB

    1.安装pymongo库 windows下: pip install pymongo 或者 easy_install install pymongo 2.使用pymongo模块连接mongoDB数据库 ...

  8. Python连接MongoDB操作

    1.安装PyMongo 注意:请勿安装“bson”软件包. PyMongo配有自己的bson包; 执行“pip install bson”或“easy_install bson”则会安装与PyMong ...

  9. Python连接mongodb提取部分字段内数据并写入txt文件

    #coding=utf-8 import sys reload(sys) sys.setdefaultencoding('utf-8') from pymongo import MongoClient ...

随机推荐

  1. python3 字符串str

    字符串使用单引号或双引号表示: 是不可变的,当一个字符串被创建后,它始终不会被改变: 可以被迭代,也可以被切片: +拼接字符串,*重复输出字符串: 格式符%s,%d,%f u'字符串:Unicode格 ...

  2. 如何改变Android标准键的颜色?

    本文选自StackOverflow(简称:SOF)精选问答汇总系列文章之一,本系列文章将为读者分享国外最优质的精彩问与答,供读者学习和了解国外最新技术,本文为大家讲解如何改变Android标准键的颜色 ...

  3. 【map】p1184 高手之在一起

    题目背景 高手是可以复活的,这点我们大家都知道. 题目描述 高手列出了一个详尽的日程表,这次他要追求的则是一个心灵纯洁的小萝莉.他和她都是要上课的,但是也会有时间空闲,于是高手决定无时无刻都要跟着她. ...

  4. mysql5.6更改datadir数据存储目录

    环境需求: 有些数据存储场景可能需要将数据放到指定的挂载路径或目录,mysql默认存放数据路径在:/var/lib/mysql下. 测试环境: 操作步骤: 1. 查看当前存储目录 [root@mysq ...

  5. hdu 2149 (巴什博奕)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2149 Problem Description 虽然不想,但是现实总归是现实,Lele始终没有逃过退学的 ...

  6. python安装tesseract

    一.最近在学习python爬虫的时候需要用到tesseract,但书上的给的教程对我并不适用,坑了好久天,才终于成功. 二.方法: 1.由于我看的是静谧博主的那本书.他给的教程在python3安装有问 ...

  7. jconsole 连接 wildfly 10 监控

    1,远程wildfly服务器: 访问:http://211.100.75.242:9990 按照提示添加用户,重启后可以登录进入.成功. 2,省事做法.本地解压wildfly服务器,进入wildfly ...

  8. JavaScript深入之从原型到原型链

    构造函数创建对象 我们先使用构造函数创建一个对象: function Person(){} var person = new Person(); person.name = 'Kevin'; cons ...

  9. (贪心部分背包问题)Saving HDU HDU2111

    Saving HDU Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  10. linux c 编程 ------ 头文件及其作用

    #include <stdio.h> printf #include <sys/types.h> 基本系统数据类型.系统的基本数据类型在32编译环境中保持为32位值,在64编译 ...