python - 如何以编程方式使用 Microsoft Word 的拼写/语法检查器?

标签 python com ms-word word-2007 win32com

我想使用拼写/语法检查器处理中等到大量的文本片段,以获得它们“质量”的粗略近似值和排名。速度也不是真正关心的问题,所以我认为最简单的方法是编写一个脚本,将片段传递给 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/

相关文章:

python - 在 Pandas 中,如何选择在一列中有重复但在另一列中有不同值的行?

python - 将新行添加到输出文件python

c# - 免注册类 COM 互操作和线程

python - 检查类是否可迭代

c++ - 如何在同一系统中为不同的用户帐户注册相同的 COM dll

.net - 需要使用 .NET 支持复制 IDispatch*;不知道类(class)名称

excel - 从多个 Microsoft Word 文件中提取文本框数据

fonts - Word 2010中Cambria Math斜体字体的区别

vba - XPath 在 VBA 中返回字符串或 bool 值?

python >=3.5 : Checking type annotation at runtime