gpt4 book ai didi

python - 如何使用表示为unicode的python对象列表

转载 作者:太空狗 更新时间:2023-10-30 01:56:17 25 4
gpt4 key购买 nike

我有一个包含 unicode 数据的对象,我想在它的表示中使用它例如

# -*- coding: utf-8 -*-

class A(object):

def __unicode__(self):
return u"©au"

def __repr__(self):
return unicode(self).encode("utf-8")

__str__ = __repr__

a = A()


s1 = u"%s"%a # works
#s2 = u"%s"%[a] # gives unicode decode error
#s3 = u"%s"%unicode([a]) # gives unicode decode error

现在,即使我从 repr 返回 unicode,它仍然会报错所以问题是我如何使用此类对象的列表并从中创建另一个 unicode 字符串?

平台详情:

"""
Python 2.5.2 (r252:60911, Jul 31 2008, 17:28:52)
[GCC 4.2.3 (Ubuntu 4.2.3-2ubuntu7)] on linux2
'Linux-2.6.24-19-generic-i686-with-debian-lenny-sid'
"""

也不知道为什么

print a # works
print unicode(a) # works
print [a] # works
print unicode([a]) # doesn't works

python 小组回答了这个问题 http://groups.google.com/group/comp.lang.python/browse_thread/thread/bd7ced9e4017d8de/2e0b07c761604137?lnk=gst&q=unicode#2e0b07c761604137

最佳答案

s1 = u"%s"%a # 有效

这是有效的,因为在处理 'a' 时它使用它的 unicode 表示(即 unicode 方法),

然而,当您将它包装在诸如“[a]”之类的列表中时...当您尝试将该列表放入字符串中时,所调用的是 unicode([a])(与repr 在列表的情况下),列表的字符串表示形式,它将使用'repr(a)'在其输出中表示您的项目。这将导致问题,因为您传递的是包含 'a' 的 utf-8 编码版本的 'str' 对象(字节串),并且当字符串格式试图将其嵌入到您的 unicode 字符串中时,它将尝试使用 hte 默认编码将其转换回 unicode 对象,即 ASCII。因为 ascii 没有它试图转换的任何字符,所以它失败了

你想做的事情必须以这种方式完成:u"%s"% repr([a]).decode('utf-8') 假设你所有的元素都编码为utf-8(或 ascii,从 unicode 的角度来看是 utf-8 的子集)。

为了更好的解决方案(如果您仍然想让字符串看起来像列表 str),您将不得不使用之前建议的方法,并使用 join,如下所示:

u'[%s]' % u','.join(unicode(x) for x in [a,a])

尽管这不会处理包含 A 对象列表的列表。

我的解释听起来非常不清楚,但我希望你能从中理解一些道理。

关于python - 如何使用表示为unicode的python对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/842696/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com