Unicode字符串格式化

3

我在一段没有注释的代码中看到了这个。有没有什么理由这样做?

 new_var = u'%s' % (child.tag)

在这种情况下,child是一个实例,tag是该实例的属性。看起来使用以下方式可以更简单地完成:

 new_var = unicode(child.tag)
3个回答

2

它们是相同的,只是个人偏好的问题。就Python之禅等方面而言,两种方式都是显式地获取child.tag的Unicode表示。从机械上讲,它们做的事情是一样的:

>>> class foo(object):
    def __init__(self, val):
        self.val = val

    def __str__(self):
        return "str: %s" % self.val
    def __unicode__(self):
        return "unicode: %s" % self.val


>>> f = foo("bar")
>>> u'%s' % f
u'unicode: bar'
>>> unicode(f)
u'unicode: bar'
>>> '%s' % f
'str: bar'

2

这可能是由于代码中包含需要翻译的字符串(此时%s是一个有用的占位符),或者预计在以后的某个时间点包含需要翻译的字符串。


1

它们应该产生相同的结果。我认为在Python 2.5之前并没有添加'u'前缀字符,而unicode()函数在此之前和现在都存在。此外,如果您需要指定编码类型,unicode()函数可以让您这样做。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接