Python difflib:序列相似度高于截止点,但get_close_matches()没有结果

时间:2017-07-02 18:54:51

标签: python python-3.x difflib

所以我使用difflib找到以不同格式写下的相同街道。这是真正让我感到困惑的一对:'1-йЛихачевскийпереулок'和'ПереулокЛихачевский1-й'。

我像这样计算序列相似性:

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,也没有结果。

我缺少什么?

1 个答案:

答案 0 :(得分:0)

get_close_matches()的第二个参数是要匹配的字符串序列,而不是单个字符串。因此,例如,传递一个列表:

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

按原样,您传递了一个字符串,该字符串被视为一系列单个字符。