(Python)在数据文件中搜索可能存在拼写错误的字符串

时间:2016-12-04 00:19:34

标签: python

假设我有一个文档,我想搜索字符串“Google”,但也可能会输入错误信息,例如“Goggle”,“Gooole”,“Goofle”。

我想要做的是弄清楚是否有办法创建一个每个位置都有变化的字符串,例如我想要搜索 G +(o)+(o或g)+(o或g或f)+(l)+ e。

将这些字母连接在一起是一种在Python中执行此操作的方法,还是有一种更简单的方法?您是否可以在每个位置添加变体而无需输入每个可能的字母组合?

谢谢

2 个答案:

答案 0 :(得分:3)

我会使用字符串距离并选择一个阈值:

import difflib

def similarity(word, pattern):
    return difflib.SequenceMatcher(a=word.lower(), b=pattern.lower()).ratio()

text = "Somme text with google or gooole or goofle";
lookup = "google";
threshold = 0.9

for word in text.split():
    if similarity(word, lookup) > threshold:
        print(word)

答案 1 :(得分:1)

您可以使用正则表达式:

re.findall(r'^(Go[og][ogf]le)$', string)

Pythex:Link

通过任何方式,正则表达式可能不是一个更好的方法。