如果您有一个带有unicode字符的字符串,则可以打印它,并获得未转义的版本:
>>> s = "äåö" >>> s '\xc3\xa4\xc3\xa5\xc3\xb6' >>> print s äåö
但是如果我们有一个包含上面字符串的列表并打印出来:
>>> s = ['äåö'] >>> s ['\xc3\xa4\xc3\xa5\xc3\xb6'] >>> print s ['\xc3\xa4\xc3\xa5\xc3\xb6']
您仍然会获得转义的字符序列。您如何才能使列表的内容不被转义,这可能吗?像这样:
>>> print s ['äåö']
另外,如果字符串是unicode类型,那么您如何与上述相同?
unicode
>>> s = u'åäö' >>> s u'\xe5\xe4\xf6' >>> print s åäö >>> s = [u'åäö'] >>> s [u'\xe5\xe4\xf6'] >>> print s [u'\xe5\xe4\xf6']
打印字符串时,将获得__str__对象方法的输出- 在这种情况下,该字符串不带引号。__str__列表的方法不同,它创建一个包含打开和关闭[]的字符串,以及__repr__包含在其中的每个对象的方法所产生的字符串。你看到的是之间的差异__str__和__repr__。
__str__
[]
__repr__
您可以改为构建自己的字符串:
print '[' + ','.join("'" + str(x) + "'" for x in s) + ']'
此版本应可在Python 2中的Unicode和字节字符串上使用:
print u'[' + u','.join(u"'" + unicode(x) + u"'" for x in s) + u']'