Python 拼写检查在使用的时候有些问题一直在困扰着我们。其实只有不断的学习才能更好的使用这门语言。这几天在翻旧代码时发现以前写的注释部分有很多单词拼写错误,这些单词错得不算离谱,应该可以用工具自动纠错绝大部分。
专注于为中小企业提供成都网站制作、网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业密云免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上千多家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
用 Python 拼写检查脚本很容易,如果能很好利用 aspell/ispell 这些现成的小工具就更简单了。
Google 大牛 Peter Norvig 写了一篇 How to Write a Spelling Corrector 很值得一看,大牛就是大牛,21行 Python拼写检查问题,而且还不用外部工具,只需要事先读入一个词典文件。本文程序的 edits1 函数就是从牛人家那里 copy 的。
- #!/usr/bin/python
- # A simple spell checker
- # written by http://www.vpsee.com
- import os, sys, subprocess, signal
- alphabet = 'abcdefghijklmnopqrstuvwxyz'
- def found(word, args, cwd = None, shell = True):
- child = subprocess.Popen(args,
- shellshell = shell,
- stdin = subprocess.PIPE,
- stdout = subprocess.PIPE,
- cwdcwd = cwd,
- universal_newlines = True)
- child.stdout.readline()
- (stdout, stderr) = child.communicate(word)
- if ": " in stdout:
- # remove \n\n
- stdoutstdout = stdout.rstrip("\n")
- # remove left part until :
- left, candidates = stdout.split(": ", 1)
- candidatescandidates = candidates.split(", ")
- # making an error on the first letter of a word is less
- # probable, so we remove those candidates and append them
- # to the tail of queue, make them less priority
- for item in candidates:
- if item[0] != word[0]:
- candidates.remove(item)
- candidates.append(item)
- return candidates
- else:
- return None
- # copy from http://norvig.com/spell-correct.html
- def edits1(word):
- n = len(word)
- return set([word[0:i]+word[i+1:] for i in range(n)] +
- [word[0:i]+word[i+1]+word[i]+word[i+2:] for i in range(n-1)] +
- [word[0:i]+c+word[i+1:] for i in range(n) for c in alphabet] +
- [word[0:i]+c+word[i:] for i in range(n+1) for c in alphabet])
- def correct(word):
- candidates1 = found(word, 'aspell -a')
- if not candidates1:
- print "no suggestion"
- return
- candidates2 = edits1(word)
- candidates = []
- for word in candidates1:
- if word in candidates2:
- candidates.append(word)
- if not candidates:
- print "suggestion: %s" % candidates1[0]
- else:
- print "suggestion: %s" % max(candidates)
- def signal_handler(signal, frame):
- sys.exit(0)
- if __name__ == '__main__':
- signal.signal(signal.SIGINT, signal_handler)
- while True:
- input = raw_input()
- correct(input)
以上就是对Python 拼写检查的相关解决方案。
文章名称:Python拼写检查如何更简单的使用
网站路径:http://www.gawzjz.com/qtweb/news19/176019.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联