这是一个完整的菜鸟问题....
但是为什么python中的一些字符串显示为:
{u'foobar: u'bar}
而其他人则显示为:
{foobar: bar}
它们是等价的吗?你如何在两者之间转换?
这是一个完整的菜鸟问题....
但是为什么python中的一些字符串显示为:
{u'foobar: u'bar}
而其他人则显示为:
{foobar: bar}
它们是等价的吗?你如何在两者之间转换?
不,它们不等效
字符串前面的“u”表示它是 Unicode。Unicode 被设计为一个扩展字符集,以适应非英语的语言。您可以阅读这段有趣且非技术性的 Unicode 历史。
http://www.reigndesign.com/blog/love-hotels-and-unicode/
正如 Lattyware 所提到的,在 Python 3.x 中,所有字符串都是 Unicode。
如果您使用的是 Python 2.x,尤其是在 Web 上,那么确保您的程序正确处理 Unicode 是值得的。很多人喜欢抱怨不支持 Unicode 的网站。
u
前缀表示字符串是 Unicode ..
http://docs.python.org/reference/lexical_analysis.html
请参阅第 2.4.1 节:
'u' 或 'U' 前缀使字符串成为 Unicode 字符串。Unicode 字符串使用 Unicode Consortium 和 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 字符串(以及如何转换或编码字符串)的信息。
Usingu'string'
定义字符串是 unicode 类型。
>>> type('hi')
<type 'str'>
>>> type(u'hi')
<type 'unicode'>
您可以在uncode 文档页面中阅读所有相关信息。