Frage

Ich möchte eine mittlere bis große Anzahl von Textauszüge verarbeiten, um eine Rechtschreibung / Grammatikprüfung mit einem rau Annäherung und das Ranking ihrer bekommen „Qualität.“ Geschwindigkeit ist nicht wirklich von Belang entweder, so dass ich denke, die einfachste Möglichkeit, ein Skript zu schreiben, ist, dass die Schnipsel zu Microsoft Word vergeht (2007) und betreibt eine Rechtschreib- und Grammatikprüfung auf sie.

Gibt es eine Möglichkeit, dies aus einem Skript zu tun (genauer gesagt, Python)? Was ist eine gute Ressource für das Lernen über Word-Steuerung programmatisch?

Wenn nicht, ich nehme an, ich etwas von Open Source Grammar Checker (SO) .

Update

Als Antwort auf Chris' Antwort, gibt es zumindest eine Möglichkeit, um a) Öffnen eine Datei (enthält den Code-Schnipsel (e)), b) einen VBA-Skript aus dem Inneren Word ausführen, die die Rechtschreib- und Grammatikprüfung nennt, und c ) einen Hinweis auf die „Partitur“ des Snippets zurückkehren (s)?

Update 2

Ich habe eine Antwort gegeben, die zu funktionieren scheint, aber wenn jemand andere Vorschläge hat werde ich diese Frage für einige Zeit offen halten.

War es hilfreich?

Lösung

Es dauerte einige graben, aber ich denke, dass ich eine nützliche Lösung gefunden. Im Anschluss an die Beratung bei http://www.nabble.com/ edit-a-Word-Dokument-programmatisch-td19974320.html ich bin mit dem win32com Modul (wenn die Source Link nicht funktioniert, nach dieser Stack-Überlauf Antwort Sie können pip verwenden Sie das Modul) zu erhalten, die den Zugriff auf Word COM-Objekte ermöglicht. Der folgende Code demonstriert das schön:

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)

, welche erzeugt

Grammar: 2
Spelling: 3

, die passen die Ergebnisse, wenn die Prüfung manuell aus Word aufrufen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top