Olá, Rogério. Tudo bem?
É possível sim ler um arquivo .docx utilizando bibliotecas padrão do Python, ou seja, formas "nativas" que dispensam a necessidade de instalar módulos externos.
O conteúdo dos arquivos .docx é armazenado no formato XML por debaixo dos panos. Levando isso em consideração, podemos usar módulos e ferramentas da biblioteca padrão do Python para manipular o texto do nosso arquivo .docx.
Uma forma de fazer isso é utilizando os módulos zipfile
e xml.etree.ElementTree
.
Se temos um arquivo chamado Documento.docx que contém o seguinte conteúdo:
Olá mundo!
Esse é um texto de exemplo.
O código para ler esse conteúdo desse documento pode ser visto a seguir:
import zipfile
import xml.etree.ElementTree as ET
# Abrimos o arquivo .docx e salvamos como um objeto Zipfile
doc_zip = zipfile.ZipFile("Documento.docx")
# Acessamos o conteúdo do documento no formato XML através da função .read()
doc_xml = doc_zip.read("word/document.xml")
# Criamos um parser para converter o XML sem formatação
parser = ET.XMLPullParser(['end'])
parser.feed(doc_xml)
# Percorremos o conteúdo do XML e printamos ele
for _, elem in parser.read_events():
if elem.text is not None:
print(elem.text)
Saída do código:
Olá mundo!
Esse é um texto de exemplo.
Caso queira entender melhor como funciona esses módulos, deixo a seguir o link para a documentação de cada um deles:
Apesar da solução acima funcionar, não é recomendado "reinventar a roda". Isso significa que caso já exista um módulo que faz o que desejamos, o ideal é se possível utilizar esse módulo, pois ele já foi testado e leva em consideração diversos cenários e é menos passível a erros.
Assim, para ler documentos .docx em Python, temos por exemplo, o módulopython-docx
.
Espero ter ajudado. Qualquer outra dúvida estou a disposição.
Abraços. Bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!