Python2.7.3を使用しています。リテラルの違いを誰かが説明できますか?
'\u0391'
と:
u'\u0391'
そして、それらが以下のREPLでエコーされる別の方法(特にa1に追加された余分なスラッシュ):
>>> a1='\u0391'
>>> a1
'\\u0391'
>>> type(a1)
<type 'str'>
>>>
>>> a2=u'\u0391'
>>> a2
u'\u0391'
>>> type(a2)
<type 'unicode'>
>>>
Python2.7.3を使用しています。リテラルの違いを誰かが説明できますか?
'\u0391'
と:
u'\u0391'
そして、それらが以下のREPLでエコーされる別の方法(特にa1に追加された余分なスラッシュ):
>>> a1='\u0391'
>>> a1
'\\u0391'
>>> type(a1)
<type 'str'>
>>>
>>> a2=u'\u0391'
>>> a2
u'\u0391'
>>> type(a2)
<type 'unicode'>
>>>
\uabcdUnicode文字列リテラルではUnicodeエスケープ()のみを使用できます。バイト文字列では意味がありません。Python 2 Unicodeリテラル(u'some text')は、Pythonバイト文字列()とは異なるタイプのPythonオブジェクト'some text'です。
\t対を使用するようなもの\Tです。前者はPythonリテラル(タブ文字として解釈されます)で意味があり、後者は単にバックスラッシュと大文字のT(2文字)を意味します。
Unicodeとバイト文字列の違いを理解するために、PythonUnicodeHOWTOを読んでください。Unicodeの記事でJoelSpolskyをお勧めすることもできます。
注:Python 3では、同じ違いが適用されます'some text'が、Unicode文字列リテラルでありb'some text'、バイト文字列構文です。
'C とは対照的に、Python では、文字列を単純な引用符 ( ) と二重引用符 ( )で囲むことができ"ます"""。
したがって、は文字、、、、および'\u0391'を含む文字列のみです。この文字列をきれいに印刷するとき、は別の を介してエスケープされます。\u0391\\
逆に、u前に a があると、文字列は Unicode と見なされ、すべてのエスケープが評価されます。したがって、上記とは異なる「u'\u0391'コードポイントを含む Unicode 文字列」として解釈されます。0391