2009-10-05 45 views
0

我想了解一个迭代函数,它需要一个字符串“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

我不确定内部的字典都用'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个拼写错误”?或者还有什么......?