我想使用拼写/语法检查器处理中等到大量的文本片段,以获得它们“质量”的粗略近似值和排名。速度也不是真正关心的问题,所以我认为最简单的方法是编写一个脚本,将片段传递给 Microsoft Word (2007),并在它们上运行拼写和语法检查器。
有没有办法从脚本(特别是 Python)中做到这一点?什么是学习以编程方式控制 Word 的好资源?
如果没有,我想我可以尝试来自 Open Source Grammar Checker (SO) 的东西.
更新
作为对 Chris 回答的回应,至少有一种方法可以 a) 打开一个文件(包含代码片段),b) 从 Word 内部运行一个调用拼写和语法检查器的 VBA 脚本,以及 c ) 返回片段“分数”的一些指示?
更新2
我已经添加了一个似乎可行的答案,但如果有人有其他建议,我会将这个问题保留一段时间。
最佳答案
我花了一些时间进行挖掘,但我认为我找到了一个有用的解决方案。遵循 http://www.nabble.com/Edit-a-Word-document-programmatically-td19974320.html 的建议我正在使用 win32com模块(如果 SourceForge 链接不起作用,根据 this Stack Overflow answer 您可以使用 pip
获取模块),它允许访问 Word 的 COM 对象。下面的代码很好地演示了这一点:
import win32com.client, os
wdDoNotSaveChanges = 0
path = os.path.abspath('snippet.txt')
snippet = 'Jon Skeet lieks ponies. I can haz reputashunz? '
snippet += 'This is a correct sentence.'
file = open(path, 'w')
file.write(snippet)
file.close()
app = win32com.client.gencache.EnsureDispatch('Word.Application')
doc = app.Documents.Open(path)
print "Grammar: %d" % (doc.GrammaticalErrors.Count,)
print "Spelling: %d" % (doc.SpellingErrors.Count,)
app.Quit(wdDoNotSaveChanges)
产生
Grammar: 2 Spelling: 3
与从 Word 手动调用检查时的结果相匹配。
关于python - 如何以编程方式使用 Microsoft Word 的拼写/语法检查器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1646801/