import difflib
a='abcd'
b='ab123'
seq=difflib.SequenceMatcher(a=a.lower(),b=b.lower())
seq=difflib.SequenceMatcher(a,b)
d=seq.ratio()*100
print d
我使用上面的代碼,但獲得的輸出是0.0。我怎樣才能得到有效的答案?如何使用SequenceMatcher查找兩個字符串之間的相似性?
import difflib
a='abcd'
b='ab123'
seq=difflib.SequenceMatcher(a=a.lower(),b=b.lower())
seq=difflib.SequenceMatcher(a,b)
d=seq.ratio()*100
print d
我使用上面的代碼,但獲得的輸出是0.0。我怎樣才能得到有效的答案?如何使用SequenceMatcher查找兩個字符串之間的相似性?
您忘記了SequenceMatcher的第一個參數。
>>> import difflib
>>>
>>> a='abcd'
>>> b='ab123'
>>> seq=difflib.SequenceMatcher(None, a,b)
>>> d=seq.ratio()*100
>>> print d
44.4444444444
嘿漂亮的答案,有沒有什麼辦法讓比賽多少? – Mohsin 2017-05-12 13:00:10
從文檔:
的SequenceMatcher類有這樣的構造:
class difflib.SequenceMatcher(isjunk=None, a='', b='', autojunk=True)
在你的代碼的問題是,這樣做
seq=difflib.SequenceMatcher(a,b)
你逝去的a
作爲價值isjunk
和b
作爲價值a
,保留默認''
值b
。這導致了0.0
的比率。克服這種
的一種方式(已被提到的倫納特·)是明確地傳遞None
作爲額外的第一個參數,這樣所有的關鍵字參數會被分配正確的價值觀。
但是我剛剛發現並想提及另一種解決方案,它不會觸及isjunk
參數,而是使用set_seqs()
方法指定不同的序列。
>>> import difflib
>>> a = 'abcd'
>>> b = 'ab123'
>>> seq = difflib.SequenceMatcher()
>>> seq.set_seqs(a.lower(), b.lower())
>>> d = seq.ratio()*100
>>> print d
44.44444444444444
https://docs.python.org/3/library/difflib.html#sequencematcher-objects – 2017-07-19 12:57:23