Le problème de la recherche à l'intérieur d'un fichier XML de document Word est que le texte peut être divisé en éléments à n'importe quel caractère. Il sera certainement divisé si le formatage est différent, par exemple comme dans Bonjour Monde . Mais il peut peuvent être divisés à n'importe quel moment et cela est valable dans OOXML. Vous finirez donc par avoir affaire à un XML comme celui-ci, même si le formatage ne change pas au milieu de la phrase !
<w:p w:rsidR="00C07F31" w:rsidRDefault="003F6D7A">
<w:r w:rsidRPr="003F6D7A">
<w:rPr>
<w:b />
</w:rPr>
<w:t>Hello</w:t>
</w:r>
<w:r>
<w:t xml:space="preserve">World.</w:t>
</w:r>
</w:p>
Vous pouvez bien sûr le charger dans un arbre DOM XML (je ne suis pas sûr de ce que ce sera en Python) et demander à obtenir le texte uniquement sous forme de chaîne, mais vous pourriez vous retrouver avec de nombreuses autres "impasses", simplement parce que la spécification OOXML fait environ 6000 pages et que MS Word peut écrire beaucoup de "choses" auxquelles vous ne vous attendez pas. Vous pourriez donc finir par écrire votre propre bibliothèque de traitement de documents.
Ou vous pouvez essayer d'utiliser Aspose.Words .
Il est disponible sous forme de produits .NET et Java. Les deux peuvent être utilisés à partir de Python. L'un via COM Interop, l'autre via JPype. Voir Aspose.Words Programmers Guide, Utilize Aspose.Words in Other Programming Languages (désolé, je ne peux pas poster un second lien, stackoverflow ne me le permet pas encore).