打印没有转义字符的unicode字符列表

Par*_*ham 8 python encoding list python-2.7

如果您有一个字符串,使用unicode字符,您可以打印它,并获得未转义的版本:

>>> s = "äåö"
>>> s
'\xc3\xa4\xc3\xa5\xc3\xb6'
>>> print s
äåö
Run Code Online (Sandbox Code Playgroud)

但如果我们有一个包含上面字符串的列表并打印它:

>>> s = ['äåö']
>>> s
['\xc3\xa4\xc3\xa5\xc3\xb6']
>>> print s
['\xc3\xa4\xc3\xa5\xc3\xb6']
Run Code Online (Sandbox Code Playgroud)

你仍然可以获得转义字符序列.你如何获得未被列出的列表内容,是否可能?像这样:

>>> print s
['äåö']
Run Code Online (Sandbox Code Playgroud)

此外,如果字符串是unicode类型,你如何做同样的事情?

>>> s = u'åäö'
>>> s
u'\xe5\xe4\xf6'
>>> print s
åäö
>>> s = [u'åäö']
>>> s
[u'\xe5\xe4\xf6']
>>> print s
[u'\xe5\xe4\xf6']
Run Code Online (Sandbox Code Playgroud)

Mar*_*som 9

当您打印字符串时,您将获得__str__对象方法的输出- 在这种情况下是没有引号的字符串.__str__列表的方法是不同的,它创建一个包含开始和结束[]的字符串以及由其中__repr__包含的每个对象的方法生成的字符串.你看到的是之间的差异__str____repr__.

您可以构建自己的字符串:

print '[' + ','.join("'" + str(x) + "'" for x in s) + ']'
Run Code Online (Sandbox Code Playgroud)

此版本应适用于Python 2中的Unicode和字节字符串:

print u'[' + u','.join(u"'" + unicode(x) + u"'" for x in s) + u']'
Run Code Online (Sandbox Code Playgroud)

  • @int_ua你可以创建一个正确处理它的递归函数.但那不是问题. (4认同)

sbe*_*rry 7

这令人满意吗?

>>> s = ['äåö', 'äå']
>>> print "\n".join(s)
äåö
äå
>>> print ", ".join(s)
äåö, äå


>>> s = [u'åäö']
>>> print ",".join(s)
åäö
Run Code Online (Sandbox Code Playgroud)