2010-07-19 17 views
8

Como csv.reader() ¿hay alguna otra función que pueda leer los archivos .rtf, .txt, .doc en Python?Lector de documentos, rtf y txt en python

+0

relacionado: [extraer texto de archivos de MS Word en python] (http://stackoverflow.com/q/125222/4279) – jfs

Respuesta

9

se puede leer un archivo de texto con

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

Trate PyRTF para archivos RTF. Creo que leer archivos MS Word .doc es bastante improbable a menos que esté en Windows y puede usar algunas de las interfaces MS nativas para leer esos archivos. This article afirma que muestra cómo escribir scripts que interactúan con Word.

4

csv es un formato específico, por lo que necesita un "analizador" para leerlo. Esto es lo que proporciona el módulo csv como lo mencionó. Los archivos de texto (generalmente con el sufijo .txt) no tienen ningún "formato" fijo, por lo que puede leerlos después de open ing them (la respuesta de Jesse proporciona los detalles). Los archivos CSV son comúnmente archivos de texto, por lo que su distinción no es muy precisa.

En cuanto a RTF, hay un montón de ellos. Ver this answer para más detalles. La cosa PyRTF que Jesse mencionó parece ser la más popular.

Los archivos de documentos de Microsoft Word (generalmente con el sufijo .doc) son otra bestia ya que el formato es de propiedad. No tengo mucha experiencia con los convertidores de Python, pero hay algunos de línea de comandos (como wvHTML) que hacen un trabajo decente. This question analiza bastantes. También existe la opción de que MS-Word lo haga por ti. una interfaz COM como Jesse ha mencionado.

3

He tenido un verdadero dolor de cabeza tratando de hacer esto simple para los documentos de Word y escritor.

Hay una solución simple: llame a openoffice en la línea de comandos para convertir su documento de destino a texto, luego cargue el texto en Python.

Otras herramientas de conversión que probé produjeron resultados no confiables, mientras que otras bibliotecas de Python oOo eran demasiado complejas.

Si lo que desea es conseguir en el texto para que pueda procesar, utilizar esto en la línea de comandos de Linux:

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

(llamaremos a partir de Python usando subproceso si desea automatizarlo).

Creará un archivo de texto que puede cargar fácilmente en python.

(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

No use '|'. Hay un 'o' para eso. – FunkySayu

0

Hay un módulo de pitón llamada '' docx que se puede utilizar para leer .docx archivos. Aunque no podrás leer .doc porque está casi obsoleto hoy en día.

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

Se puede encontrar Here en PyPI.

Cuestiones relacionadas