使用Difflib从字符串列表中删除几乎重复的字符串

时间:2013-07-30 06:04:50

标签: python difflib

我正在使用python和mysql。这是我的代码

cur.execute("SELECT distinct product_type FROM cloth_table")
Product_type_list = cur.fetchall()

现在,Product_type_list是一个描述product_type的字符串列表,如下所示

product_type_list =['T_shirts', 'T_shirt', 'T-shirt', 'Jeans', 'Jean', 'Formal Shirt' 'Shirt']

在product_type_list中,T恤有3个重复的条目,每件牛仔裤和衬衫有2个。

现在我希望我的Product_type_list像这样

Product_type_list=['T_shirt' , 'Jeans', 'Shirt']

我认为我们可以使用Difflib.Sequencematcher的quickratio。但是如何做到这一点

2 个答案:

答案 0 :(得分:0)

我对Difflib.Sequencematcher包知之甚少。但是对于这个,模糊匹配将通过使用MySql全文搜索概念来完成。

尝试获取FTS匹配逻辑并解决此问题。而DB和Python也有一些Soundex概念。

使用FTS我们得到比较分数,如排名,根据我们将过滤列表的排名。我这样做就像使用SQL Server FTS的类似任务一样。

答案 1 :(得分:0)

我认为,你可以定义自己的算法来解决这个问题,因为大多数东西都是依赖域,而你的产品类型并不是那么大,我猜想。例如,根据您的要求,您的正式衬衫正式将被忽略,而在其他领域可能不是这样。因此,首先定义,你自己的停止词(产品名称中可以忽略的词)和删除结尾的's'和修剪空格和' - ','_'类型的非字母并转换为大写。鉴于此,您可以构建自己的匹配算法来解决此问题。我遇到了这样的问题,并在尝试了几个现有的库后用我自己的实现来解决它。

你应该继续改进你的算法,因为它基于启发式和假设。