2009-10-05 75 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個拼寫錯誤」?或者還有什麼......?