Python:在python2和python3中以相同的方式使用unicode文字

时间:2018-09-10 08:35:13

标签: python python-3.x unicode

我已经多年没有写python代码了,所以我的问题可能很愚蠢和简单。我加载json数据:

import json
data = json.loads('{"hello": "world"}')

在python 2中,我应该这样访问hello键:data[u'hello']。因为键是Unicode,所以还有一个u符号。

在python 3中:data['hello']。默认情况下为Unicode字符串。

如果我想编写可移植的代码怎么办?

3 个答案:

答案 0 :(得分:5)

只要您使用的是Python 3.3或更高版本,就可以在字符串上使用unicode前缀。这样一来,您就可以编写无需更改即可在Python 2和Python 3.3+上运行的代码。

请参见https://www.python.org/dev/peps/pep-0414/

或者,您在代码的顶部执行代码from __future__ import unicode_literals,然后所有字符串默认为unicode文字,并且即使在Python2中,您也必须在字节字符串之前使用b""前缀。

答案 1 :(得分:3)

将此添加到文件顶部

$(document).ready(function(){

    $.ajax({
            type: "POST",
            url:"http://192.167.1.16/files/passes.php",
            crossDomain: true,
            dataType: "jsonp",
            data: "param=none", 
        success: function (data) { 
            console.log(data);
            console.log("success!");
        },
        error: function (err) { 
             console.log(err);
             console.log("error!");
        }
        });

    }); 

这仍然与python3中的不完全相同,但是可以帮助您使其可移植。如果愿意同时支持2和3,则必须查看 6 模块,以处理生成器/迭代器,字符串差异。

答案 2 :(得分:1)

data[u'hello']在python 2和3中均可使用。 但是data.get('hello')更好。