2

インスタンスがあり、その Unicode 表現を取得したいと考えています。Unicode 関数 Unicode() は文字列またはバッファのみを受け入れるため、インスタンスを直接渡すとエラーが発生します。

私はこれを試しました:

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

次のエラーが表示されます。

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

これらのインスタンスを Unicode 文字列表現に変換するにはどうすればよいでしょうか。オブジェクトを実装しませんでした。COM インターフェイスを介してアクセスしています。

環境:

これは、COM インターフェイスを介して Python を使用して、Word 文書で使用可能な書式設定スタイルにアクセスするためのコードです。オブジェクトを ASCII 文字列に変換しようとすると、次のエラーが発生します。

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)

一部の Win32 コードを変更するのではなく、自分のコードで問題を処理したいと考えています。ご覧のとおり、Python 2.6 を使用しています。

4

1 に答える 1

1

インスタンスを次の表現に変換してみてください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))
于 2013-05-28T11:10:40.903 に答える