2017-07-02 38 views
0

所以我使用difflib來查找以不同格式寫入的相同街道。這是一對真正讓我感到困惑的人:'1-йЛихачевскийпереулок'和'ПереулокЛихачевский1-й'。Python difflib:截斷點以上的序列相似性,但沒有結果get_close_matches()

我計算序列相似性是這樣的:

s = difflib.SequenceMatcher(None, "1-й Лихачевский переулок", "Переулок Лихачевский 1-й") 
s.ratio() 

給我的0.5416666666666666結果。夠好,呃?但沒關係,get_close_matches()的默認截止點是0.6,所以我這樣做:

difflib.get_close_matches('1-й Лихачевский переулок', 'Переулок Лихачевский 1-й', cutoff=0.5) 

沒有結果!事實上,即使我將截止值設置爲0.1,也沒有結果。

我在想什麼?

回答

0

get_close_matches()的第二個參數是要匹配的字符串序列,而不是單個字符串。因此,例如,通過一個列表:

>>> difflib.get_close_matches('1-й Лихачевский переулок', ['Переулок Лихачевский 1-й'], cutoff=0.5) 
['Переулок Лихачевский 1-й'] 

因爲,你傳遞了一個字符串,它被視爲一個單獨的字符序列。

+0

Welp,解釋一切。謝謝! – Huita

+0

不客氣:-)如果您的問題已得到解答,您應該「接受」您最喜歡的答案:https://stackoverflow.com/help/someone-answers –