1. 程式人生 > >用字形錯誤來造錯詞;;把錯詞和正詞進行比較,以“錯詞 正詞 錯字”的形式輸出(假設“字形”這個詞語是正確的詞語,”宇形”就是錯詞。那麽輸出形式為“宇形 字形 宇”)。

用字形錯誤來造錯詞;;把錯詞和正詞進行比較,以“錯詞 正詞 錯字”的形式輸出(假設“字形”這個詞語是正確的詞語,”宇形”就是錯詞。那麽輸出形式為“宇形 字形 宇”)。

append enc 存儲 lis 進行 readlines bsp nbsp 長度

需要的文本再文件的“錯詞demo.rar中”

#
coding = utf-8 dict1 = {} #字典來存儲每個字的形近字 with open(詞條.txt,r,encoding=utf-8) as f: zidian_1 = [] #列表來存儲每行的詞 for line in f.readlines(): line = line.strip() zidian_1.append(line) with open(過濾後的相似字列表.txt
,r,encoding=utf-8) as f: for line in f.readlines(): if len(line.strip().split( ))>1: list1 = list(line.strip().split( )[1]) list1.append(line[0]) dict1[line[0]] = list1 #字典來存儲每個字的形近字 print(dict1) output = open(output.txt,a+
,encoding=utf-8) for line in zidian_1: #遍歷每個詞 try: #長度為2的詞 if len(line) == 2: if line[0] in dict1.keys(): #第一個字有形近字 for i in dict1[line[0]]: if line[1] in dict1.keys(): #第二個字有形近字 for
j in dict1[line[1]]: ci = i+j if ci not in zidian_1: if ci[0] == line[0]: output.writelines(ci+ +line+ +ci[1]+\n) #錯別字是第二個 else: if ci[1] == line[1]: output.writelines(ci+ +line+ +ci[0]+\n) #錯別字是第一個 else: output.writelines(ci + + line + + ci[0] + + ci[1]+\n) #所有都是錯別字 else: #第二個字沒有形近字 ci = i+line[1] if ci not in zidian_1: output.writelines(ci+ +line+ +ci[0]+\n) #錯別字肯定就是第一個了 else: #第一個字沒有形近字 if line[1] in dict1.keys(): #第二個字有形近字 for j in dict1[line[1]]: ci = line[0] + j if ci not in zidian_1: output.writelines(ci+ +line+ +ci[1]+\n) #錯別字肯定就是第二個 else: #第二個字沒有形近字 pass #長度為3的詞 if len(line) == 3: if line[0] in dict1.keys(): #第一個字有形近字 for i in dict1[line[0]]: if line[1] in dict1.keys(): #第二個字有形近字 for j in dict1[line[1]]: if line[2] in dict1.keys(): #第三個字有形近字 for k in dict1[line[2]]: ci = i+j+k if ci not in zidian_1: if ci[0] == line[0]: if ci[1] == line [1]: output.writelines(ci + + line + + ci[2] + \n) #錯別字是第三個 else: if ci[2] == line [2]: output.writelines(ci + + line + + ci[2] + \n) # 錯別字是第二個 else: output.writelines(ci + + line + + ci[1] + + ci[2] + \n) #錯別字是第二個第三個 else: if ci[1] == line [1]: if ci [2] == line[2]: output.writelines(ci + + line + + ci[0] + \n) #錯別字是第一個 else: output.writelines(ci + + line + + ci[0] + + ci[2] + \n) #錯別字是第一個第三個 else: if ci[2] == line[2]: output.writelines(ci + + line + + ci[0] + + ci[1] + \n) #錯別字是第一個和第二個 else: output.writelines(ci + + line + + ci[0] + + ci[1] + + ci[2] +\n) #都是錯別字 else: # 第三個字沒有形近字 ci = i+j+line[2] if ci not in zidian_1: if ci[0] == line[0]: output.writelines(ci + + line + + ci[1] + \n) #錯別字是第二個 else: if ci[1] == line[1]: output.writelines(ci + + line + + ci[0] + \n) # 錯別字是第一個 else: output.writelines(ci+ +line+ +ci[0]+ +ci[1]+\n) #錯別字肯定是第一個和第二個 else: #第二個字沒有形近字 if line[2] in dict1.keys(): #第三個字有形近字 for k in dict1[line[2]]: ci = i+line[1]+k if ci not in zidian_1: if ci[0] == line[0]: output.writelines(ci + + line + + ci[2] + \n) #錯別字是 第三個 else: if ci[2] == line[2]: output.writelines(ci + + line + + ci[0] + \n) # 錯別字是 第一個 else: output.writelines(ci+ +line+ +ci[0]+ +ci[2]+\n) #錯別字是肯定是第一個和第三個 else: #第三個字沒有形近字 ci = i + line[1] + line[2] if ci not in zidian_1: output.writelines(ci+ +line+ +ci[0]+\n) #錯別字肯定是第一個 else: #第一個字沒有形近字 for i in dict1[line[0]]: if line[1] in dict1.keys(): # 第二個字有形近字 for j in dict1[line[1]]: if line[2] in dict1.keys(): # 第三個字有形近字 for k in dict1[line[2]]: ci = line[0] + j + k if ci not in zidian_1: if ci[1] == line[1]: output.writelines(ci + + line + + ci[2] + \n) #錯別字肯定是第三個 else: if ci[2] == line[2]: output.writelines(ci + + line + + ci[1] + \n) # 錯別字肯定是第二個 else: output.writelines(ci+ +line+ +ci[1]+ +ci[2]+\n) #錯別字是第二個和第三個 else: # 第三個字沒有形近字 ci = line[0] + j + line[2] if ci not in zidian_1: output.writelines(ci+ +line+ +ci[1]+\n) #錯別字是第二個 else: # 第二個字沒有形近字 if line[2] in dict1.keys(): # 第三個字有形近字 for k in dict1[line[1]]: ci = line[0] + line[1] + k if ci not in zidian_1: output.writelines(ci+ +line+ +ci[2]+\n) #錯別字是第三個 else: # 第三個字沒有形近字 pass except Exception: pass

用字形錯誤來造錯詞;;把錯詞和正詞進行比較,以“錯詞 正詞 錯字”的形式輸出(假設“字形”這個詞語是正確的詞語,”宇形”就是錯詞。那麽輸出形式為“宇形 字形 宇”)。