如果你有如下字符串,带有 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']
最佳答案
当你打印一个字符串时,你会得到对象的 __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']'
关于python - 打印没有转义字符的 unicode 字符列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16798811/