7

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'>
>>> 
4

2 に答える 2

7

\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'、バイト文字列構文です。

于 2013-01-28T09:56:12.877 に答える
2

'C とは対照的に、Python では、文字列を単純な引用符 ( ) と二重引用符 ( )で囲むことができ"ます"""

したがって、は文字、、、、および'\u0391'を含む文字列のみです。この文字列をきれいに印刷するとき、は別の を介してエスケープされます。\u0391\\

逆に、u前に a があると、文字列は Unicode と見なされ、すべてのエスケープが評価されます。したがって、上記とは異なる「u'\u0391'コードポイントを含む Unicode 文字列」として解釈されます。0391

于 2013-01-28T10:00:07.420 に答える