小编典典

打印不带转义字符的Unicode字符列表

python

如果您有一个带有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类型,那么您如何与上述相同?

>>> s = u'åäö'
>>> s
u'\xe5\xe4\xf6'
>>> print s
åäö
>>> s = [u'åäö']
>>> s
[u'\xe5\xe4\xf6']
>>> print s
[u'\xe5\xe4\xf6']

阅读 214

收藏
2020-12-20

共1个答案

小编典典

打印字符串时,将获得__str__对象方法的输出-
在这种情况下,该字符串不带引号。__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']'
2020-12-20