这是一个完整的菜鸟问题......
但为什么python中的某些字符串显示为:
{u'foobar: u'bar}
而其他人则显示为:
{foobar: bar}
它们是等价的吗?你如何在两者之间转换?
答案 0 :(得分:3)
u
前缀表示字符串是Unicode ..
http://docs.python.org/reference/lexical_analysis.html
参见第2.4.1节:
前缀'u'或'U'使字符串成为Unicode字符串。统一 字符串使用Unicode定义的Unicode字符集 Consortium和ISO 10646.描述了一些额外的转义序列 下面,提供Unicode字符串。前缀'b'或'B'是 在Python 2中被忽略;它表明文字应该成为一个 Python 3中的字节文字(例如,代码自动转换时) 用2to3)。 “u”或“b”前缀后面可以跟一个“r”前缀。
如您所见,Python将能够自动比较各种编码的字符串:
>>> a = u'Hello'
>>> b = 'Hello'
>>> c = ur'Hello'
>>> a == b
True
>>> b == c
True
您可以参考documentation了解有关Python中Unicode字符串的更多信息(以及如何转换或编码字符串)。
答案 1 :(得分:3)
不,它们不等同
字符串前缀的“u”表示它是Unicode。 Unicode被设计为扩展字符集,以适应非英语语言。您可以阅读Unicode的有趣和非技术历史。
http://www.reigndesign.com/blog/love-hotels-and-unicode/
正如Lattyware所提到的,在Python 3.x中,所有字符串都是Unicode。
如果您正在使用Python 2.x,特别是对于Web,那么值得确保您的程序正确处理Unicode。很多人喜欢抱怨不支持Unicode的网站。
答案 2 :(得分:2)
使用u'string'
定义字符串是unicode类型。
>>> type('hi')
<type 'str'>
>>> type(u'hi')
<type 'unicode'>
您可以在uncode documentation page中阅读所有相关内容。