Idealmente, me gustaría que un módulo o biblioteca que no requiere acceso de superusuario se instale; Tengo privilegios limitados en mi entorno de trabajo.¿Hay un módulo de Python para convertir RTF a texto sin formato?
Respuesta
OpenOffice tiene un lector RTF. Puede usar python para escribir OpenOffice, see here for more info.
Probablemente puedas probar el mágico com-objeto en Windows para leer cualquier cosa que huele a ms-binary. No lo recomendaría sin embargo.
En realidad, analizar los datos sin procesar probablemente no será muy difícil, see this example escrito en .bat/QBasic.
DocFrac es un convertidor de fuente abierta 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).
Formato oficial de texto enriquecido (RTF) Specifications, versión 1.7, de Microsoft.
Buena suerte (con los privilegios limitados en su entorno de trabajo).
Gracias. Abrí el documento en OpenOffice y lo guardé como un archivo de texto sin formato. Este fue probablemente el enfoque más simple. Y gracias por recordarme que es Mi entorno de trabajo. Pedí sudo acceso. – Tony
El enlace a RTF :: TEXT :: Converter está roto. También lo es el enlace a la discusión en la lista de correo de Python. Es por eso que se desaconsejan las respuestas de enlace ... – GreenAsJade
gracias por señalarlo, he reparado uno de los enlaces. Lamentablemente, el otro tuvo que ser eliminado. –
Hay buena biblioteca pyrtf-ng para uso general de RTF.
Gracias, pero el problema con pyrtf-ng es que es útil para generar archivos RTF, no para analizarlos. Lo descargué de su página de SourceForge (no hay nada debajo de la pestaña Descargar en Google Code), y esta es la única funcionalidad que pude encontrar. – Tony
@tony, ¿has mirado http://code.google.com/p/pyrtf-ng/source/browse/#svn/trunk/rtfng/parser? ¡Cuando todavía no hay descargas en un proyecto alojado en Google Code, navega por las fuentes! -) –
¿Has echado un vistazo 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. (Consulte en el módulo rtfng.parser.base
).
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
He estado trabajando en una biblioteca llamada Pyth, lo que puede hacer esto:
http://pypi.python.org/pypi/pyth/
la conversión de un archivo RTF a texto plano se ve algo como 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 latex y pdf outpu t. Su soporte RTF es pretty robust - lo usamos en producción para leer archivos RTF generados por varias versiones de Word, OpenOffice, Mac TextEdit, EIOffice y otros.
Es una pena que Python 3 no sea compatible ;-( – Epoc
@Epoc, hay algo de trabajo para hacerlo compatible con Python 3. Tengo una bifurcación en mi repositorio que puede instalar con 'pip install git + https: //github.com/robertour/pyth @ pyth-py3'. Puedes ver algo de la discusión [aquí] (https://github.com/brendonh/pyth/pull/33/commits). –
Por el contrario, si desea escribir RTFs 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 cualquiera de mis documentos RTF, tanto con el 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 putas.
(He subido dos archivos, para que pueda comprobar bibliotecas RTF en solitario: http://yadi.sk/d/RMHawVdSD8O9http://yadi.sk/d/RmUaSe5tD8OD)
enlaces muertos, ¿todavía los tienes? – n611x007
me encontré con pyrtflib - no hay mucho (cualquier) la documentación sobre el mismo, es un poco un caso de la instalación y luego usando la función de ayuda incorporada() para averiguar qué está 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.
Desde entonces, he dado una respuesta a la función Rtf2Txt.getText() y funcionó bien; mi uso no fue exhaustivo en ningún caso, pero todos los casos que probé dieron como resultado la salida esperada. – Blair
Aquí hay un enlace a un script que convierte RTF a texto usando expresiones regulares: Regular Expression for extracting text from an RTF string
También, y el enlace actualizado en github: Github link
- 1. RTF a texto sin formato en Java
- 2. Obtener texto sin formato de un texto RTF
- 3. Cómo convertir reStructuredText a texto sin formato
- 4. Delphi: la mejor manera de convertir rtf a texto
- 5. La mejor manera de convertir HTML a texto sin formato usando Python
- 6. cómo convertir texto HTML a texto sin formato?
- 7. Convierta texto sin formato a PDF en Python
- 8. Cómo convertir una cadena rtf a texto en C#
- 9. Convertir html a texto sin formato en VBA
- 10. ¿Hay alguna función que convierta HTML a texto sin formato?
- 11. ¿Qué módulo CPAN recomendaría para convertir HTML en texto sin formato?
- 12. Python: Cómo convertir texto con formato de rebajas al texto
- 13. ASP clásico (VBScript) convertir códigos HTML a texto sin formato
- 14. Cómo convertir FlowDocument a rtf
- 15. Cómo convertir ODT a DOC/RTF sin openoffice.org
- 16. ¿Cómo crear RTF a partir de texto sin formato (o cadena) en C#?
- 17. python convertir documentos de Microsoft Office a texto sin formato en Linux
- 18. Limpiar texto RTF
- 19. Cómo convertir HTML a RTF en Perl?
- 20. HTML a texto sin formato (para correo electrónico)
- 21. ¿Cómo puedo convertir un documento .rtf o .doc a LaTeX?
- 22. C# .net convertir HTML a RTF
- 23. Texto RTF Unicode en RichEdit
- 24. ¿Reducción a texto sin formato en Ruby?
- 25. Enviar un correo electrónico con texto rtf en delphi
- 26. Convertir HTML a texto sin formato y mantener la estructura/formato, con ruby
- 27. Transformar un NSAttributedString en texto sin formato
- 28. Python: Convertir cadenas de formato a expresiones regulares
- 29. use xsl para enviar texto sin formato
- 30. Conversor de HTML a RTF para .NET
Puede instalar los paquetes de Python con 'easy_install' y el' - -opción del usuario' sin permisos. –