2017-12-08 24 views
1

私はすべての可能な文字をユニコード表記で印刷したいので、Pythonで基本forループを行いました。Pythonでユニコード文字を印刷するループ

for i in range(1000,1100): 
    print('\\u'+str(i)) 

、それが印刷されるようなループを印刷した文字列は、私はちょうど実行された場合、なぜ私は理解していない

ように

... 
\u1077 
\u1078 
\u1079 

とし...次

print('\u0227') 

ȧが印刷されます。

printとprintを呼び出してユニコード表現をタイプするだけで、forループとvsループを連結した文字列として印刷することの違いは分かりません。また、forループによって生成された文字列は、エスケープのためにもう1つのバックスラッシュを必要とします。

私はタイプ関数と呼ばれ、どちらの場合も、それらは文字列であると言いますが、この動作以来確実にしたいと思います。

+2

は 'str'の代わりに' chr'を使います。 'chr(0x227)' - > ''ȧ'' –

+0

このようなことをするには 'print((b '\\ u%d'%i).decode( 'raw_unicode_escape'))する必要があります。 ) '。 – ekhumoro

答えて

1

コード内の文字列リテラルは、文字列になる前に処理されます。文字列中のバックスラッシュは、それに続くものが特別に解釈されなければならないことを示します。第二のバックスラッシュが続く場合

  • 、最終的な文字列が一つだけバックスラッシュを含む にレンダリングされます。リテラル'\u0227'次のようになります。だから、文字列リテラル'\\u'はリテラルで(バックスラッシュを含む)、シーケンス全体 が文字列で、示されたUnicode文字になりuと4桁の16進数が続く場合は\u

  • 文字列になり文字列ȧ

ポール装甲はすでに書いたように、(Pythonの3.xの)chr()またはunichr()(FまたはPython 2.x)はUnicode文字の番号をとり、この文字だけを含む文字列を返します。

+0

@zwer Python 2.xの場合は正しいですが、Python 3.xの場合は 'chr()'です。私は答えでそれを明確にしました、ありがとう –

関連する問題