38

だから私は、便宜上、Python3.2と2.7で作業したいPythonスクリプトを持っています。

両方で機能するUnicodeリテラルを使用する方法はありますか?例えば

#coding: utf-8
whatever = 'שלום'

上記のコードでは、python 2.x(u'')およびpython 3.xでユニコード文字列が必要にuなりますが、構文エラーはほとんど発生しません。

4

2 に答える 2

27

編集-Python3.3以降、u''リテラルは再び機能するため、u()関数は必要ありません。

最良のオプションは、Python 2では文字列オブジェクトからUnicodeオブジェクトを作成するメソッドを作成することですが、Python 3では文字列オブジェクトをそのままにします(すでにUnicodeであるため)。

import sys
if sys.version < '3':
    import codecs
    def u(x):
        return codecs.unicode_escape_decode(x)[0]
else:
    def u(x):
        return x

次に、次のように使用します。

>>> print(u('\u00dcnic\u00f6de'))
Ünicöde
>>> print(u('\xdcnic\N{Latin Small Letter O with diaeresis}de'))
Ünicöde
于 2011-07-09T05:49:02.577 に答える
0

3.0、3.1、および3.2では:

from __future__ import unicode_literals

出典ubershmekel、質問中。オリジナルについてはリビジョン4を参照してください。

于 2019-06-04T14:35:57.240 に答える