標籤:記錄 htm 系統 get index sof 串連 chat ati
本文介紹一個樣本:使用 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 欄位內容。故查詢條件如下:
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()
四,完整代碼
系統內容 pycharm2016.3 Anaconda3 Python3.6
from pymongo import MongoClientfrom 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
Python 串連MongoDB並比較兩個字串相似性的簡單樣本