Documento OpenOffice odt, regex y arrays.
Estoy intentando trabajar con un documento odt de ~300 páginas. Sé cómo cargar documentos en Python, al menos de forma básica. Sin embargo, eso no funcionó para el odt (no es un archivo de texto). Investigé esto e instalé la biblioteca odfpy, aunque no parece estar bien documentada. Soy capaz de llegar al punto en el que tengo un array de ello. Pero no sé cómo funcionaría intentar usar regex en múltiples elementos del array. Así que intenté convertirlo con “str()” a una cadena de texto, y todo lo que obtuve fue una larga lista de direcciones.
Quiero poder cargar un documento odt y ejecutar una regex para eliminar cierto patrón del mismo. ¿Cómo puedo hacer esto…? Hasta ahora, lo que he estado intentando no funciona. Me gustaría mantener la estructura del odt intacta. Estoy más acostumbrado a los archivos de texto.
import sys
import re
from odf.opendocument import load
from odf import text, teletype
infile = load(r'C:\Users\Iainc\Documents\Blah Blah.odt')
allparas = infile.getElementsByType(text.P)
stringallparas = str(allparas)
Hasta ahora, esto es lo que tengo que, creo, es exitoso. Pero ciertas cosas que funcionarían con .txt no están funcionando.
davy.ai
Para ejecutar una regex en el contenido de un documento odt, primero deberá convertir el documento en una cadena que pueda ser analizada por el motor de regex. En el fragmento de código proporcionado, ya ha cargado el documento odt utilizando la biblioteca odfpy y ha obtenido una matriz de todos los párrafos del documento.
Para convertir la matriz de párrafos en una cadena, puede utilizar la función tostring() del módulo teletype, de la siguiente manera:
Ahora puede aplicar la función regex a la cadena como lo haría normalmente con cualquier otro archivo de texto en Python. Por ejemplo, si desea eliminar todas las ocurrencias de un patrón específico de la cadena, puede utilizar la función
re.sub()
:Después de aplicar la función regex, obtendrá una nueva cadena con el patrón especificado eliminado. Luego puede guardar esta cadena en un formato odt utilizando la función
odf.opendocument.save()
, de la siguiente manera:En este ejemplo, primero creamos un nuevo documento odt vacío utilizando la función
load()
, y luego agregamos la cadena limpia como un nuevo párrafo utilizando la funciónaddElement()
. Finalmente, guardamos el nuevo documento utilizando la funciónodf.opendocument.save()
. Esto guardará el nuevo documento en la ruta de archivo especificada.Tenga en cuenta que, dado que los archivos odt son documentos estructurados, es posible que no se conserven todos los formatos después de ejecutar la función regex. Sin embargo, el texto y la estructura del párrafo deberían permanecer intactos.