Bonjour à tous,
Un appel au pro de Python pour résoudre un bug qui me dépasse :
Voici le traceback :
Je comprends la ligne : assert(isinstance(elt, element.Element) or isinstance(elt, odf.element.Element)) et pour cela je vérifie mon script de cette manière :File "C:\Users\chris\Documents\mesScryptPython\fichier\remplacer_texte_stable_2902bis.py", line 508, in style_texte
next(gen) # A chaque appel de la fonction next() sur ce générateur, le code jusqu’au prochain yield est exéc
^^^^^^^^^
File "C:\Users\chris\Documents\mesScryptPython\fichier\remplacer_texte_stable_2902bis.py", line 406, in edittextElements_pour_style_texte
elem.parentNode.removeChild(e)
File "C:\Users\chris\AppData\Local\Programs\Python\Python312\Lib\site-packages\odf\element.py", line 236, in removeChild
self.ownerDocument.remove_from_caches(oldChild)
File "C:\Users\chris\AppData\Local\Programs\Python\Python312\Lib\site-packages\odf\opendocument.py", line 204, in remove_from_caches
assert(isinstance(elt, element.Element) or isinstance(elt, odf.element.Element))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError
ce qui donne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 rep1=isinstance(elem,element.Element) print('instance de element.Element oui/non : ',rep1) # --> False rep2=isinstance(elem,opendocument.element.Element) print('instance de opendocument.element.Element oui/non : ',rep2) # --> False rep3=isinstance(elem,element.Text) print('instance de element.Text oui/non : ',rep3) # --> True
Vous l'avez compris, j'utilise pyodf et je veux supprimer une partie de texte. La ligne elem.parentNode.removeChild(elem) me renvoie systématiquement cette erreur. Surtout je ne comprends pas que la fonction assert() lève une erreur puisque instance de element.Element est Falseinstance de element.Element oui/non : False
instance de opendocument.element.Element oui/non : False
instance de element.Text oui/non : True
Je ne poste pas le script dans l'immédiat car il est pour l'instant extrêmement brouillon. Dans la partie qui nous intéresse, j'insère dans text:p des spans (de manière à appliquer un style à certains mots) et après cette insertion, il convient de supprimer l'ancien texte.
Merci d'avance à qui voudra m'aider.
![]()
Partager