使用嵌入字典进行迭代字符替换
问题描述:
我想了解一个迭代函数,它需要一个字符串“12345”并返回所有可能的拼写错误,这些错误是基于字符串中每个字符附近的字典。使用嵌入字典进行迭代字符替换
outerDic = {}
Dict1 = {'1':'2','2':'q'}
outerDic['1'] = Dict1
Dict1 = {'1':'1','2':'q','3':'w','4':'3'}
outerDic['2'] = Dict1
Dict1 = {'1':'2','2':'w','3':'e','4':'4'}
outerDic['3'] = Dict1
Dict1 = {'1':'3','2':'e','3':'r','4':'5' }
outerDic['4'] = Dict1
Dict1 = {'1':'4','2':'r','3':'t','4':'6' }
outerDic['5'] = Dict1
outerDic
输出应返回字符串
12345
22345
q2345
11345
1q345
13345
12245
12e45
12445
等的列表...
我设置的功能,如下所示:
def split_line(text):
words = text.split()
for current_word in words:
getWordsIterations()
我想了解如何设置getWordsIterations()函数来通过字典并系统地替换字符cters。
在此先感谢,Pythong的新款。
答
我不确定内部的字典都用'1','2'等代表,它们是否表示它们基本上只是列出可能的拼写错误的替代品?但是,有些(但不是全部)也会包含“正确”字符......非错字...?!对不起,但你真的在这个演讲中非常困惑 - 这个例子并没有多大帮助(为什么在第二个位置没有“w”,如果我理解你的怪异数据结构...等等)。
因此,在等待澄清的同时,让我假设您所要的只是为每个输入字符表示所有可能的单字符拼写错误 - 列表将会很好,但在这种情况下字符串更紧凑, :
possible_typos = {
'1': '2q',
'2': '1qw3',
'3': '2we4',
'4': '3er5',
'5': '4rt6',
}
现在,如果你只关心例1完全相同错误拼写:
def one_typo(word):
L = list(word)
for i, c in enumerate(L):
for x in possible_typos[c]:
L[i] = x
yield ''.join(L)
L[i] = c
因此,例如,for w in one_typo("12345"): print w
发出:
22345
q2345
11345
1q345
1w345
13345
12245
12w45
12e45
12445
12335
123e5
123r5
12355
12344
1234r
1234t
12346
“任意数量的拼写错误”会产生一个巨大的列表 - 这就是你想要的吗?或者“0到2个拼写错误”?或者还有什么......?