Comment extraire du texte à partir d'un fichier docx en utilisant python-docx
Je suis en train d'utiliser python-docx
module (pip install python-docx
)
mais il semble être très déroutant comme dans dépôt github échantillon de test, ils sont à l'aide de opendocx
fonction, mais dans readthedocs ils sont à l'aide de Document
classe. Même s'ils sont seulement montrer comment ajouter du texte à un fichier docx pas de lecture existante?
1er (opendocx
) ne fonctionne pas, peut être obsolète. Pour le deuxième cas, j'ai essayé d'utiliser:
from docx import Document
document = Document('test_doc.docx')
print document.paragraphs
Il est retourné une liste de <docx.text.Paragraph object at 0x... >
Puis j'ai fait:
for p in document.paragraphs:
print p.text
Il a renvoyé tout le texte, mais il y avait quelques chose qui manque. Toutes les Url (CTRL+CLIC pour aller à l'URL) n'étaient pas présents dans le texte sur la console.
Quel est le problème? Pourquoi les Url sont manquantes?
Comment pourrais-je avoir le texte complet sans une itération sur la boucle (quelque chose comme open().read()
)
- Remarque l'ancien dépôt GitHub github.com/mikemaccana/python-docx a 'Ce Projet A Déménagé!' dans la rubrique 1.
- Aussi, toutes les listes numérotées sont pas exportées sous forme de texte...
Vous devez vous connecter pour publier un commentaire.
vous pouvez essayer ce
Vous pouvez utiliser python-docx2txt qui est adapté à partir de python-docx, mais peut aussi extraire du texte à partir des liens, des en-têtes et pieds de page. Il peut également extraire des images.
Sans Installer
python-docx
docx
est en fait un fichier zip avec plusieurs dossiers et fichiers qu'il contient. Dans le lien ci-dessous vous pouvez trouver une fonction simple pour extraire le texte à partir dedocx
fichier, sans avoir besoin d'installerpython-docx
etlxml
parfois problème:http://etienned.github.io/posts/extract-text-from-word-docx-simply/
Il y a deux "générations" de python-docx. La première génération est terminée avec la 0.2.versions x et la "nouvelle" génération a commencé à v0.3.0. La nouvelle génération est un sol en place, orienté objet de réécriture de l'ancienne version. Il a un distinctes référentiel trouve ici.
La opendocx() la fonction est une partie de l'héritage de l'API. La documentation est pour la nouvelle version. L'ancienne version n'a pas de documentation pour parler de.
Ni la lecture ni l'écriture, de liens hypertextes, sont pris en charge dans la version actuelle. Cette capacité est sur la feuille de route, et le projet est en développement actif. Il s'avère être tout à fait un large API parce que la Parole a autant de fonctionnalités. Nous allons donc l'obtenir, mais probablement pas dans les prochains mois, à moins que quelqu'un décide de se concentrer sur cet aspect et y contribuer.
vous pouvez l'essayer aussi
À l'aide de python-docx, comme @Chinmoy Panda 's réponse montre:
Cependant,
para.text
perdu le texte dansw:smarttag
(Correspondant github question est ici: https://github.com/python-openxml/python-docx/issues/328), vous devez utiliser la fonction suivante à la place:J'ai eu un problème similaire, j'ai donc trouvé une solution de contournement (supprimer les balises de lien hypertexte grâce à des expressions régulières, de sorte que seule une balise de paragraphe en reste). J'ai posté cette solution sur https://github.com/python-openxml/python-docx/issues/85
BP