だから私は、便宜上、Python3.2と2.7で作業したいPythonスクリプトを持っています。
両方で機能するUnicodeリテラルを使用する方法はありますか?例えば
#coding: utf-8
whatever = 'שלום'
上記のコードでは、python 2.x(u''
)およびpython 3.xでユニコード文字列が必要にu
なりますが、構文エラーはほとんど発生しません。
だから私は、便宜上、Python3.2と2.7で作業したいPythonスクリプトを持っています。
両方で機能するUnicodeリテラルを使用する方法はありますか?例えば
#coding: utf-8
whatever = 'שלום'
上記のコードでは、python 2.x(u''
)およびpython 3.xでユニコード文字列が必要にu
なりますが、構文エラーはほとんど発生しません。
編集-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
3.0、3.1、および3.2では:
from __future__ import unicode_literals
出典:ubershmekel、質問中。オリジナルについてはリビジョン4を参照してください。