我有以下代码使用二进制搜索对单词进行拼写检查。 它将要进行拼写检查的文件与作为字典的文件进行比较,并返回所有拼写错误的单词。
当我将拼写错误的单词打印到终端时,拼写检查器起作用了,但是现在我将其写到文件中时,它只能找到一部分单词。
IV还实现了计时器来对搜索进行计时
import re
import time
start_time = time.time()
f1=open('writefile.txt', 'w+')
def binS(lo,hi,target):
if (lo>=hi):
return False
mid = (lo+hi) // 2
piv = words[mid]
if piv==target:
return True
if piv
return binS(mid+1,hi,target)
return binS(lo,mid,target)
words = [s.strip("\n").lower() for s in open("words10k.txt")]
words.sort() # sort the list
text = open("shakespeare.txt" , encoding="utf8")
content = text.read().split(" ")
content = [item.lower() for item in content]
content = ' '.join(content)
content = re.findall("[a-z]+", content)
for w in content:
if not binS(0,len(words),w):
f1.write(w)
print("--- %s seconds ---" % (time.time() - start_time))
我有这段代码,然后通过打印到终端来工作。 (也是我怎么能在写出文件的每一行写一个字)
for w in content: if not binS(0,len(words),w): print(w)
打印到终端的搜索时间:2000秒
写入文件的搜索时间:38秒