Jel*_*lby 3 python unicode python-3.x
我可以编写此代码以与 python 2.x 和 3.x 一起使用,而无需对它们进行显式测试吗?
\n\n# -*- coding: utf-8 -*-\nfrom __future__ import (unicode_literals, division, absolute_import, print_function)\n\nimport os\nimport sys\n\nif (sys.version_info[0] > 2):\n # python 3.x\n os.environ['foo'] = 'b\xc3\xa1r'\n print(os.environ['foo'])\nelse:\n # python 2.x\n os.environ['foo'] = 'b\xc3\xa1r'.encode('utf8')\n print(os.environ['foo'].decode('utf8'))\nRun Code Online (Sandbox Code Playgroud)\n
设置时,可以使用异常处理;在 Python 2 上尝试将环境变量设置为unicode对象会引发异常:
try:\n # Python 3\n os.environ['foo'] = 'b\xc3\xa1r'\nexcept UnicodeEncodeError:\n # Python 2\n os.environ['foo'] = 'b\xc3\xa1r'.encode('utf8')\nRun Code Online (Sandbox Code Playgroud)\n\n获取时,尝试使用decode方法;在 Python 3 中它会失败并出现属性错误:
try:\n # Python 2\n print(os.environ['foo'].decode('utf8'))\nexcept AttributeError:\n # Python 3\n print(os.environ['foo'])\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
6237 次 |
| 最近记录: |