这是一个完整的noob问题....python中的字符串变体 - 它们是什么意思?
但为什么在一些Python字符串显示为:
{u'foobar: u'bar}
而其他如出现:
{foobar: bar}
他们是等价?你如何在两者之间进行转换?
这是一个完整的noob问题....python中的字符串变体 - 它们是什么意思?
但为什么在一些Python字符串显示为:
{u'foobar: u'bar}
而其他如出现:
{foobar: bar}
他们是等价?你如何在两者之间进行转换?
的u
前缀表示字符串是Unicode ..
http://docs.python.org/reference/lexical_analysis.html
请参见2.4.1:
'u' 或 'U' 的前缀,使字符串Unicode字符串。 Unicode 字符串使用由Unicode 联合会和ISO 10646定义的Unicode字符集。下面描述的一些其他转义序列 可用于Unicode字符串。在Python 2中忽略'b'或'B'的前缀 ;它表示文字在Python 3中应该成为 字节字面值(例如,当代码自动转换为 时为2to3)。 'u'或'b'前缀可以后跟'r'前缀。
正如你所看到的,Python将能够自动比较各种编码的字符串:
>>> a = u'Hello'
>>> b = 'Hello'
>>> c = ur'Hello'
>>> a == b
True
>>> b == c
True
您可以了解更多关于在Python Unicode字符串(以及如何转换或编码字符串)通过参考documentation。
使用u'string'
定义该字符串是unicode类型。
>>> type('hi')
<type 'str'>
>>> type(u'hi')
<type 'unicode'>
您可以在uncode documentation page中阅读关于它的全部内容。
不,他们是不等价的
的“U”是前缀字符串意味着它的统一。 Unicode被设计为扩展字符集以适应不是英语的语言。你可以阅读这个有趣和非技术性的Unicode历史。
http://www.reigndesign.com/blog/love-hotels-and-unicode/
由于Lattyware提到,在Python 3.x中,所有的字符串都是Unicode。
如果您正在使用Python 2.x,尤其是Web,值得确保您的程序正确处理Unicode。很多人喜欢抱怨不支持Unicode的网站。
需要注意的是,所有字符串都是Python 3.x中的Unicode字符串。 – 2012-04-03 23:13:43
另请参阅Ned Batchelder关于Unicode的25分钟讲座。他非常好地解释了Unicode与字符串的区别。 http://nedbatchelder.com/text/unipain.html – 2012-04-03 23:54:13