如何获取对象的Unicode表示形式

时间:2013-05-28 11:03:40

标签: python unicode com

我有一个实例,我想获得它的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接口访问它们。

上下文:

这是一个使用Python通过COM接口访问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。

1 个答案:

答案 0 :(得分: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))