tutorial textract python text rtf

tutorial - install textract python



¿Hay un módulo de Python para convertir RTF a texto sin formato? (9)

¿Has comprobado pyrtf-ng ?

Actualización: la funcionalidad de análisis está disponible si haces un pago de Subversion, pero no estoy seguro de cuán completo es. (Mire en el módulo rtfng.parser.base ).

Idealmente, me gustaría un módulo o biblioteca que no requiera acceso de superusuario para la instalación; Tengo privilegios limitados en mi entorno de trabajo.



Hay una buena biblioteca pyrtf-ng para el manejo RTF multiuso.


He estado trabajando en una biblioteca llamada Pyth, que puede hacer esto:

http://pypi.python.org/pypi/pyth/

La conversión de un archivo RTF a texto sin formato se parece a esto:

from pyth.plugins.rtf15.reader import Rtf15Reader from pyth.plugins.plaintext.writer import PlaintextWriter doc = Rtf15Reader.read(open(''sample.rtf'')) print PlaintextWriter.write(doc).getvalue()

Pyth también puede generar archivos RTF, leer y escribir XHTML, generar documentos a partir de marcas de Python al estilo de Nevow, y tiene soporte experimental limitado para látex y salida de PDF. Su soporte RTF es bastante robusto : lo usamos en producción para leer archivos RTF generados por varias versiones de Word, OpenOffice, Mac TextEdit, EIOffice y otros.


Me encontré con pyrtflib , no hay mucha (ninguna) documentación en él, es un caso de instalarlo y luego usar la función de ayuda incorporada () para averiguar qué hay disponible y qué hace todo.

Habiendo dicho eso en mi pequeña ejecución de prueba de su función rtf.Rtf2Html.getHtml () fue lo suficientemente bueno. No he probado la función Rtf2Txt, pero dada la naturaleza más simple de convertir rtf a texto sin formato, debería funcionar bien.


Me encontré con lo mismo e intenté codificarlo yo mismo. No es tan fácil, pero esto es lo que tenía cuando decidí buscar una aplicación de línea de comandos. Es ruby ​​pero puedes adaptarte a Python muy fácilmente. Hay algo de basura en el encabezado para limpiar, pero se puede ver más o menos la idea.

f = File.open(''r.rtf'',''r'') b=0 p=false str = '''' begin while (char = f.readchar) if char.chr==''{'' b+=1 next end if char.chr==''}'' b-=1 next end if char.chr==''//' p=true next end if p==true && (char.chr=='' '' or char.chr==''/n'' or char.chr==''/t'' or char.chr==''/r'') p=false next end if p==true && (char.chr==''/''') #this is the source of my headaches. you need to read the code page from the header and encode this. p=false str << ''#'' next end next if b>2 next if p str << char.chr end rescue EOFError end f.close


OpenOffice tiene un lector RTF. Puedes usar python para escribir OpenOffice, mira aquí para más información .

Probablemente puedas intentar usar el com-object mágico en Windows para leer cualquier cosa que huele a ms-binary. No lo recomendaría sin embargo.

En realidad, el análisis de los datos sin procesar probablemente no será muy difícil, vea este ejemplo escrito en .bat / QBasic.

DocFrac es un convertidor de código abierto entre RTF, HTML y texto. Plataformas Windows, Linux, ActiveX y DLL disponibles. Probablemente será bastante fácil resumirlo en Python.

RTF::TEXT::Converter - Extensión Perl para convertir RTF en texto . (en caso de que tenga problemas con DocFrac).

Specifications oficiales de Rich Text Format (RTF), versión 1.7, de Microsoft.

Buena suerte (con los privilegios limitados en su entorno de trabajo).


Por el contrario, si desea escribir RTF fácilmente desde Python, puede usar el módulo de terceros rtflib . Es un módulo bastante nuevo e incompleto pero aún muy poderoso y útil. A continuación se muestra un ejemplo que escribe "hello world" en texto enriquecido en un RTF llamado helloworld.rtf. Este es un ejemplo muy primitivo, y el módulo también se puede usar para agregar colores, cursivas, tablas y muchos otros aspectos de texto enriquecido a archivos RTF.

from rtflib import * file = RTF("helloworld.rtf") file.startfile() file.addstrict() file.addtext("hello world") file.writeout()


pyrtf-ng 0.9.1 no ha analizado ninguno de mis documentos RTF, ambos con ParsingException. El primer documento se generó con OpenOffice 3.4, el segundo con Mac TextEdit.

Pyth 0.5.6 analizó sin problemas ambos documentos, pero no ha procesado correctamente los símbolos cirílicos.

Pero cada editor abre el documento del editor de otro correctamente y sin problemas, por lo que todas las bibliotecas parecen tener un soporte rtf débil.

Así que estoy escribiendo mi propio analizador con blackjack y prostitutas.

(He subido ambos archivos, por lo que puede verificar las bibliotecas RTF usted mismo: http://yadi.sk/d/RMHawVdSD8O9 http://yadi.sk/d/RmUaSe5tD8OD )