本文目錄一覽:
- 1、CTF-敲錯鍵盤的md5解密,python通解
- 2、python中是否有用於計算兩個字符串相似度的函數
- 3、python 有沒有一個模塊可以比較兩個文本文件內容差異的?而且可以只輸出差異的部分?
- 4、如何計算車牌的識別準確率?
CTF-敲錯鍵盤的md5解密,python通解
常常會有無聊的出題人,給出這樣的crypto題。md5值可能錯了幾位,多了幾位……
年輕的時候可以用眼睛找,年紀大了以後就想寫通解一勞永逸了。思路是用生成的字典去生成md5字典,再和題目密文比較相似度,正好python里有個difflib庫,調用一下就能得到相似度值。
有了這個算法後隨便改幾位md5值都不怕啦!大不了多輸出幾位!
與君共享
python中是否有用於計算兩個字符串相似度的函數
linux環境下,沒有首先安裝python_Levenshtein,用法如下:
重點介紹幾個該包中的幾個計算字串相似度的幾個函數實現。
1. Levenshtein.hamming(str1, str2)
計算漢明距離。要求str1和str2必須長度一致。是描述兩個等長字串之間對應位置上不同字符的個數。如
2. Levenshtein.distance(str1, str2)
計算編輯距離(也成Levenshtein距離)。是描述由一個字串轉化成另一個字串最少的操作次數,在其中的操作包括插入、刪除、替換。如
算法實現 參考動態規劃整理:。
3. Levenshtein.ratio(str1, str2)
計算萊文斯坦比。計算公式 r = (sum – ldist) / sum, 其中sum是指str1 和 str2 字串的長度總和,ldist是類編輯距離
注意:這裡的類編輯距離不是2中所說的編輯距離,2中三種操作中每個操作+1,而在此處,刪除、插入依然+1,但是替換+2
這樣設計的目的:ratio(‘a’, ‘c’),sum=2,按2中計算為(2-1)/2 = 0.5,』a’,’c’沒有重合,顯然不合算,但是替換操作+2,就可以解決這個問題。
4. Levenshtein.jaro(s1, s2)
計算jaro距離,
其中的m為s1, s2的匹配長度,當某位置的認為匹配 當該位置字符相同,或者在不超過
t是調換次數的一半
5. Levenshtein.jaro_winkler(s1, s2)
計算Jaro–Winkler距離
python 有沒有一個模塊可以比較兩個文本文件內容差異的?而且可以只輸出差異的部分?
difflib是python提供的比較序列(string list)差異的模塊。實現了三個類:
1SequenceMatcher 任意類型序列的比較 (可以比較字符串)
2Differ 對字符串進行比較
3HtmlDiff 將比較結果輸出為html格式.
建議你使用SequenceMatcher比較器,給你個例子吧。
SequenceMatcher實例:
import difflib
from pprint import pprint
a = ‘pythonclub.org is wonderful’
b = ‘Pythonclub.org also wonderful’
s = difflib.SequenceMatcher(None, a, b)
print “s.get_matching_blocks():”
pprint(s.get_matching_blocks())
print “s.get_opcodes():”
for tag, i1, i2, j1, j2 in s.get_opcodes():
print (“%7s a[%d:%d] (%s) b[%d:%d] (%s)” % (tag, i1, i2, a[i1:i2], j1, j2, b[j1:j2]))
輸出為:
s.get_matching_blocks():
[(1, 1, 14), (16, 17, 1), (17, 19, 10), (27, 29, 0)]
s.get_opcodes():
replace a[0:1] (p) b[0:1] (P)
equal a[1:15] (ythonclub.org ) b[1:15] (ythonclub.org )
replace a[15:16] (i) b[15:17] (al)
equal a[16:17] (s) b[17:18] (s)
insert a[17:17] () b[18:19] (o)
equal a[17:27] ( wonderful) b[19:29] ( wonderful)
SequeceMatcher(None,a,b)創建序列比較對象,將以a作為參考標準進行
Sequecematcher(None,b,a)創建序列比較對象,將以b作為參考標準進行
a,b表示待比較的兩個序列,生成序列比較對象後,調用該對象的get_opcodes()方法,將返回一個元組(tag,i1,i2,j1,j2).tag表示序列分片的比較結果.i1,i2表示序列a的索引,j1,j2表示序列b的索引.
get_opcodes()返回元組(tag,i1,i2,j1,j2)的含義
如何計算車牌的識別準確率?
識別率主要看識別核心算法是否強大(北京易泊識別相機)嵌入式車牌識別算法識別率高,識別速度快,支持車牌種類全。針對傾斜車牌,陰陽車牌,車牌過大等現場出現的特殊問題也進行了算法優化和測試,提高了識別率,正常運行環境識別率可達99.7%
原創文章,作者:TMZLR,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/330446.html