Python 串連MongoDB並比較兩個字串相似性的簡單樣本

來源:互聯網
上載者:User

標籤:記錄   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並比較兩個字串相似性的簡單樣本

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.