2010-07-19 9 views
8

Wie csv.reader() gibt es noch andere Funktionen, die .rtf, .txt, .doc Dateien in Python lesen können?Doc, rtf und txt Leser in Python

+0

verwandt: [Extrahieren von Text aus MS Word-Dateien in Python] (http://stackoverflow.com/q/125222/4279) – jfs

Antwort

9

Sie können mit

txt = open("file.txt").read() 

Versuchen PyRTF für RTF-Dateien eine Textdatei lesen. Ich würde denken, dass das Lesen von MS Word .doc-Dateien ziemlich unwahrscheinlich ist, es sei denn, Sie sind unter Windows und Sie können einige der nativen MS-Schnittstellen zum Lesen dieser Dateien verwenden. This article behauptet zu zeigen, wie Skripts geschrieben werden, die mit Word interagieren.

4

csv ist ein bestimmtes Format, so dass Sie einen "Parser" benötigen, um es zu lesen. Dies bietet Ihnen das csv-Modul, wie Sie bereits erwähnt haben. Textdateien (normalerweise suffixed mit .txt) haben kein festes "Format", so dass Sie sie nur nach open lesen können (Jesses Antwort gibt die Details). CSV-Dateien sind in der Regel Textdateien, daher ist Ihre Unterscheidung nicht sehr genau.

Wie für RTF, gibt es eine Reihe von ihnen. Einzelheiten finden Sie unter this answer. Die PyRTF-Sache, die Jesse erwähnte, scheint jedoch am beliebtesten zu sein.

Microsoft Word-Dokumentdateien (in der Regel suffixed mit .doc) sind ein anderes Tier, da das Format proprietär ist. Ich habe nicht viel Erfahrung mit Python-Konvertern, aber es gibt ein paar Kommandozeilen-Einsen (wie wvHTML), die einen einigermaßen anständigen Job machen. This question diskutiert etliche. Es gibt auch die Möglichkeit, dass MS-Word das für Sie selbst erledigt. eine COM-Schnittstelle wie Jesse erwähnt hat.

3

Ich hatte echte Kopfschmerzen, um diese einfache Sache für Word und Writer-Dokumente zu tun.

Es gibt eine einfache Lösung: Rufen Sie OpenOffice in der Befehlszeile auf, um das Zieldokument in Text zu konvertieren, und laden Sie den Text dann in Python.

Andere Konvertierungstools, die ich ausprobierte, erzeugten unzuverlässige Ausgaben, während andere Python oOo-Bibliotheken zu komplex waren.

Wenn Sie wollen einfach nur den Text, so dass Sie sie verarbeiten kann, verwenden Sie diese auf der Linux-Befehlszeile ein:

soffice --headless --convert-to txt:Text /path_to/document_to_convert.doc 

(es aus Python nennen subprocess verwenden, wenn Sie es automatisieren möchten).

Es wird Textdatei erstellen, die Sie einfach in Python laden können.

(Credit)

4
import win32com.client 
if tmpFile.endswith('.xml') or tmpFile.endswith('.doc') or tmpFile.endswith('.docx'): 
     app = win32com.client.Dispatch("Word.Application") 
     app.Visible = False 
     app.Documents.Open(tmpFile) 
     doc = app.ActiveDocument 

     docText = doc.Content.Text 
     print(docText) 
     doc.Close() 
     app.Quit() 
+2

Verwenden Sie nicht '|'. Dafür gibt es ein 'oder'. – FunkySayu

0

Es ist ein Python-Modul genannt 'docx', die Sie verwenden können, .docx Dateien zu lesen. Sie werden jedoch nicht in der Lage sein, .doc zu lesen, weil es heutzutage fast überholt ist.

from docx import Document 
doc = Document(filepath) 
# Reading Data 
data = doc.paragraphs 
tables = doc.tables 

Sie können es Here auf Pypi finden.