Python:在python2和python3中以相同的方式使用unicode文本
我已经很多年没有编写python代码了,所以我的问题可能既愚蠢又简单。我加载json数据:Python:在python2和python3中以相同的方式使用unicode文本,python,python-3.x,unicode,Python,Python 3.x,Unicode,我已经很多年没有编写python代码了,所以我的问题可能既愚蠢又简单。我加载json数据: import json data = json.loads('{"hello": "world"}') 在Python2中,我应该通过以下方式访问hello键:data[u'hello']。还有一个额外的u符号,因为键是Unicode 在python 3中:数据['hello']。默认情况下为Unicode字符串 如果我想编写可移植代码,该怎么办?只要您使用的是Python 3.3或更高版本,就可以在字
import json
data = json.loads('{"hello": "world"}')
在Python2中,我应该通过以下方式访问hello
键:data[u'hello']
。还有一个额外的u
符号,因为键是Unicode
在python 3中:数据['hello']
。默认情况下为Unicode字符串
如果我想编写可移植代码,该怎么办?只要您使用的是Python 3.3或更高版本,就可以在字符串上使用unicode前缀。这将允许您编写在Python2和Python3.3+上运行而无需更改的代码 看
或者,您可以在代码顶部从“未来”导入unicode文本进行
,然后所有字符串默认为unicode文本,即使在Python2中,您也必须在字节字符串前面使用b”“
前缀。将其添加到文件顶部
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
这仍然与python3中的不完全相同,但有助于使其可移植。如果您愿意为2和3都支持它,那么您必须查看six模块,以及处理生成器/迭代器、字符串差异。数据[u'hello']
在Python2和3中都可以使用。
但是data.get('hello')
甚至更好