[u'String']
是一个列表的文本表示包含在Python中的Unicode字符串2.
如果你运行print(some_list)
那么它就相当于
print'[%s]' % ', '.join(map(repr, some_list))
即,为类型list
创建Python对象的文本表示,repr()
函数将针对每个项目调用。
不要混淆一个Python对象和它的文本表示 - repr('a') != 'a'
甚至是文本表示的文本表示不同:repr(repr('a')) != repr('a')
。
repr(obj)
返回一个字符串,其中包含对象的可打印表示。它的目的是在REPL中对可用于调试的对象进行明确表示。经常eval(repr(obj)) == obj
。
为了避免调用repr()
,你可以直接打印列表项(如果它们都是Unicode字符串),例如:print ",".join(some_list)
- 它打印字符串的逗号分隔的列表:String
不编码Unicode字符串到字节使用硬编码字符编码,直接打印Unicode代替。否则,代码可能会失败,因为编码不能代表所有字符,例如,如果您尝试使用'ascii'
编码的非ASCII字符。或者,如果环境使用与硬编码编码不兼容的编码,则代码默默地生成mojibake(损坏的数据在管道中进一步传递)。
来源
2016-04-27 13:45:09
jfs
辉煌。谢谢。对于错字的道歉。 – gnuchu 2009-03-01 12:15:38
你实际上不需要进行编码,因为OP只能看到字符串repr,因为这就是当你打印一个列表时你看到什么东西。汤[0]将足以显示str而不是repr,显示字符串的内容而不是引用和unicode修饰符。 – ironfroggy 2009-03-01 13:36:57
在大多数情况下,您不应将Unicode表示为Unicode的文本编码为字节:您应该直接在Python中打印Unicode:[`print(','.join([u'ABC',u'...'])) `](http://stackoverflow.com/a/36891685/4279) – jfs 2016-06-12 17:20:42