2 votes

Comment obtenir la représentation Unicode d'un objet ?

J'ai une instance et je veux obtenir une représentation Unicode de celle-ci. La fonction Unicode () n'accepte que les chaînes de caractères ou les tampons, de sorte que j'obtiens une erreur si je passe l'instance directement.

J'ai essayé :

document = self.grammar.application.ActiveDocument
style_map = [( unicode(s, 'utf-8'), s) for s in  document.Styles]
self.styles.set(dict(style_map))

J'obtiens cette erreur :

style_map = [( unicode(s, 'utf-8'), s) for s in  document.Styles]
TypeError: coercing to Unicode: need string or buffer, instance found

Je me demande comment convertir ces instances en représentations de chaînes Unicode. Je n'ai pas implémenté les objets. J'y accède par l'intermédiaire de l'interface COM.

Contexto:

Il s'agit d'un code permettant d'accéder aux styles de formatage disponibles dans un document Word en utilisant Python à travers une interface COM. Si j'essaie simplement de convertir les objets en chaînes ASCII, j'obtiens l'erreur suivante :

style_map = [( unicode(s), s) for s in  document.Styles]
File "C:\Python26\lib\site-packages\win32com\client\dynamic.py", line 207, in __str__ return str(self.__call__())
UnicodeEncodeError: 'ascii' codec can't encode character u'\xf3' in position 3: ordinal not in range(128)

Je préférerais traiter le problème dans mon code, plutôt que de modifier un code Win32. Comme vous pouvez le voir, j'utilise Python 2.6.

1voto

Mike Müller Points 2963

Essayez de convertir l'instance en une représentation avec repr() :

document = self.grammar.application.ActiveDocument
style_map = [( unicode(repr(s), 'utf-8'), s) for s in document.Styles]
self.styles.set(dict(style_map))

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X