我发现库difflib中的SequenceMatcher可以返回两个字符串之间的相似度分数。然而,其中一个参数isjunk有点棘手,特别是对于正则表达式。
以两个字符串为例:
比较这两个字符串时,我想忽略所有单位信息,如上面的“500g”。但是使用
以两个字符串为例:
a = 'Carrot 500g'
b = 'Cabbage 500g'
from difflib import SequenceMatcher
import re
def similar_0(a, b):
return SequenceMatcher(None, a, b).ratio()
similar_0(a, b)
def similar_1(a, b):
return SequenceMatcher(lambda x: bool(re.search(r'\b(\d)+([a-zA-Z])+\b', x)), a, b).ratio()
similar_1(a, b)
比较这两个字符串时,我想忽略所有单位信息,如上面的“500g”。但是使用
similar_0
与similar_1
得到了相同的结果,我真的很困惑isjunk
在SequenceMatcher
中作为参数的工作原理。有什么正确的方法来实现这个目的,或者其他的选择吗?
SequenceMatcher
一起使用。 - James Wong