Python字符串格式字符,用于_unicode__;?
首先,有一个吗 如果不是的话,有没有一个好的方法来强制类似的事情Python字符串格式字符,用于_unicode__;?,python,string,unicode,syntax,Python,String,Unicode,Syntax,首先,有一个吗 如果不是的话,有没有一个好的方法来强制类似的事情 print '%s' % obj 要调用obj.\uuuu unicode\uuuu而不是obj.\uuu str\uuuu?只需使用unicode格式字符串,而不是在该角色中使用字节字符串: >>> class X(object): ... def __str__(self): return 'str' ... def __unicode__(self): return u'unicode' ...
print '%s' % obj
要调用
obj.\uuuu unicode\uuuu
而不是obj.\uuu str\uuuu
?只需使用unicode格式字符串,而不是在该角色中使用字节字符串:
>>> class X(object):
... def __str__(self): return 'str'
... def __unicode__(self): return u'unicode'
...
>>> x = X()
>>> print u'%s' % x
unicode
不,这种情况没有意义
打印(u“%s”%obj)。编码(某些编码)
将使用obj.\uuuuuu unicode\uuuu
首先,有一个吗
当然(有点)。unicode格式字符串将格式值转换为unicode,这意味着将调用obj.\uuuuuUnicode\uuuuu
)
除了上面提到的,没有什么特别的原因让你不能明确表达:
print '%s' % (unicode(obj))
让
\uuuuuuunicode\uuuuuu>返回bytestring和打印unicode对象就是一个糟糕的例子。@Mike,同意返回
的问题--修复了那个打字错误。关于打印
:在一个像样的平台上,sys.stdout.encoding
被设置好了,打印会很好地工作——当你盲目猜测要使用的一些编码时(如果它不在sys.stdout上,你怎么猜呢,祈祷?)。在什么“像样的平台”上python-c'print u'\xff“>某些文件
没有引发UnicodeEncodeError?@Aaron,如果sys.stdout.encoding
是None
(或'ascii'
,等等),那么您的示例就是这样,当然,在该编码中打印不可渲染的字符是错误的——就像@Mike的代码一样,如果他使用但从未指定的神秘的some_编码类似地是非通用的(或者sys.stdout.encoding不匹配,它完全忽略了这一点).讨厌盲目猜测某些编码的想法,因为这个答案会迫使人们这样做--一个合适的平台将设置sys.stdout.encoding
,因此一个简单的打印将很好地工作,如果你不这样做,你必须将sys.stdout包装到一个包装器中,在一个地方设置编码(然后你可以使用print
as,这才是正确和体面的!),而不是把这样的猜测散布在家具上(多么可怕的编程方式)。print“%s”%unicode(obj)
并不是很明确。当%应用时,它会隐式地将str向上转换为unicode,这是Python做的最丑陋的事情之一。几秒钟后偶然发现了这一点。我想这对我来说是可行的!…它依赖于打印
的unicode字符串,这与我备受诟病、被否决和更早的答案完全相同——se相反,这一次投票的结果可能证实了人们的怀疑,即那些反对者实际上是在进行个人恩怨,而不是技术上的反对,无论他们试图用什么花言巧语来掩饰;-)。@Alex-直到我把答案贴出来之后,我才意识到我的答案有多接近。。。你可能是对的:)@Mark,我想你确实没有,因为我看到你接受了——谢谢!)
print '%s' % (unicode(obj))