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

(Python)在可能存在拼写错误的数据文件中搜索字符串,python,Python,假设我有一个文档,我想搜索字符串“Google”,但也可能会出现诸如“Goggle”、“Gooole”、“Goofle”之类的拼写错误 我想做的是找出是否有一种方法可以创建一个每个位置都有变化的字符串,例如,我想搜索 G+(o)+(o或G)+(o或G或f)+(l)+e 在Python中,将字母连接在一起是实现这一点的一种方法,还是有一种更简单的方法?你能在每个位置添加变化,而不必输入每个可能的字母组合吗 谢谢您可以使用正则表达式: re.findall(r'^(Go[og][ogf]le)$',

假设我有一个文档,我想搜索字符串“Google”,但也可能会出现诸如“Goggle”、“Gooole”、“Goofle”之类的拼写错误

我想做的是找出是否有一种方法可以创建一个每个位置都有变化的字符串,例如,我想搜索 G+(o)+(o或G)+(o或G或f)+(l)+e

在Python中,将字母连接在一起是实现这一点的一种方法,还是有一种更简单的方法?你能在每个位置添加变化,而不必输入每个可能的字母组合吗


谢谢

您可以使用正则表达式:

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


或许有一种更好的方法,正则表达式不是我的专长。

您可以使用正则表达式:

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


或许有一种更好的方法,正则表达式不是我的专长。

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

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)

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

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)

请注意,在本例中,阈值为0.9时没有命中(但0.8起作用),我将从以下位置添加:根据经验,比率()值大于0.6表示序列非常匹配请注意,在本例中,阈值为0.9时没有命中(但0.8起作用),我将从以下位置添加:根据经验,比率()值大于0.6表示序列是紧密匹配的