エスケープシーケンス(エスケープ文字)は、文字列内で特殊な文字列を表示したり、特殊な動作を行うための手段です。
エスケープシーケンスはバックスラッシュ \
で始まる一連の文字で、プログラミング言語によっては、改行やタブの挿入、特殊な文字の表示など、さまざまな操作を可能にします。
Pythonでも以下のようなエスケープシーケンスを使用することが可能。一部を列挙しておきます。
エスケープシーケンス | 説明 |
---|---|
\\ | バックスラッシュ (\ ) |
\' | シングルクォート(') |
\" | ダブルクォート(") |
\a | ASCII ベル(BEL) |
\b | ASCII バックスペース(BS) |
\f | ASCII フォームフィード(FF) |
\n | ASCII 改行(LF) |
\r | ASCII キャリッジリターン(CR) |
\t | ASCII 水平タブ(TAB) |
\v | ASCII 垂直タブ(VT) |
\ooo | 8進数で表されたASCII文字 |
\xhh | 16進数で表されたASCII文字 |
\N{name} | Unicode データベース中の文字名 |
\uxxxx | 16ビットのUnicode文字 |
\Uxxxxxxxx | 32ビットのUnicode文字 |
このページではエスケープシーケンス(エスケープ文字)の基本からPythonでのエスケープシーケンスの使い方・応用例までを初心者向けにわかりやすく1分で解説します。
Pythonエンジニアを目指す方であれば知らないと恥ずかしい超・基本知識の1つです。是非最後までご覧ください。
Python:エスケープシーケンスの基礎
エスケープシーケンスとは、文字そのものではなく改行やタブなどを表す「文字列」のこと。別名「エスケープ文字」とも呼称します。
より正確に説明すると、エスケープシーケンスは特殊な文字や動作をプログラム中で表現するための手段です。これは、たとえば新しい行に移動したいときや、特定の特殊な文字を表示したいときなどに使います。
では、具体的に見ていきましょう。エスケープシーケンスは、一般的にバックスラッシュ \
の後に続く文字で構成されます。それぞれのエスケープシーケンスは特殊な動作を表し、それが文字列の一部として解釈されます。
それではこれらを実際のコードで見てみましょう。
print("Hello\nWorld") # 1:HelloとWorldを別の行に表示します print("Hello\tWorld") # 2:HelloとWorldの間にタブを挿入します print("She said, \"Hello World\"") # 3:ダブルクォーテーションを文字列中に表示します print('It\'s a sunny day') # 4:シングルクォーテーションを文字列中に表示します print("This is a backslash \\") # 5:バックスラッシュを文字列中に表示します # 1: # Hello # World # 2: # Hello World # 3: # She said, "Hello World" # 4: # It's a sunny day # 5: # This is a backslash \
参考 print関数の使い方
見ての通り、これらのエスケープシーケンスを使うと、様々な特殊文字を表示したり、特定の動作を行ったりすることができます。
これらを理解し使いこなせるようになると、より複雑な文字列操作が可能になり、Pythonプログラミングがより楽しく、効果的になります。
Python 改行の挿入: \n
ある行の終わりから次の行の始まりに移動する場合には、\n
を使います。たとえば、"Hello"と"World"を別の行に表示したい場合は次のように書きます。
print("Hello\nWorld") # Hello # World
このように、\n
は一つの文字列内で新しい行を始めるのに便利な方法です。
Python タブの挿入: \t
文字や文の間にスペースを追加するには、\t
を使います。これはタブキーを押したときのようなスペースを作り出します。
print("Hello\tWorld") # Hello World
\t
を使うと、文字や文の間に一定のスペースを追加することができます。
Python ダブルクォーテーションの挿入: \"
文字列をダブルクォーテーションで囲むことはよくありますが、文字列中にダブルクォーテーション自体を表示したい場合はどうするでしょうか?
そのときには\"
を使います。
print("She said, \"Hello World\"") # She said, "Hello World"
これで、文字列中にダブルクォーテーションを安全に表示することができます。
文字列中に「"」を含めたい場合は、エスケープシーケンスを利用しないと、以下のように構文エラーとなってしまうため注意しましょう。
print("ダブルクォーテーション「"」") # 結果 ⇒ SyntaxError: invalid character in identifier
これらの例からわかるように、エスケープシーケンスは文字列の中で特殊な動作を行ったり、特殊な文字を表示したりするための便利なツールです。これらをうまく利用すれば、よりリッチな文字列の表現が可能となります。
Pythonでは、上記の他にも以下のようなエスケープシーケンスを利用することができます。
エスケープシーケンス | 説明 |
---|---|
\\ | バックスラッシュ (\ ) |
\' | シングルクォート(') |
\" | ダブルクォート(") |
\a | ASCII ベル(BEL) |
\b | ASCII バックスペース(BS) |
\f | ASCII フォームフィード(FF) |
\n | ASCII 改行(LF) |
\r | ASCII キャリッジリターン(CR) |
\t | ASCII 水平タブ(TAB) |
\v | ASCII 垂直タブ(VT) |
\ooo | 8進数で表されたASCII文字 |
\xhh | 16進数で表されたASCII文字 |
\N{name} | Unicode データベース中の文字名 |
\uxxxx | 16ビットのUnicode文字 |
\Uxxxxxxxx | 32ビットのUnicode文字 |
次の章では、ちょっと特殊なエスケープシーケンスの使い方を解説します。
特殊なエスケープシーケンス
エスケープシーケンスは、一般的な操作(例えば改行やタブ挿入)だけでなく、特殊な文字の挿入やその他の高度な操作も可能にします。
これらの特殊なエスケープシーケンスを理解することで、Pythonの文字列操作のパワーをさらに引き出すことができます。
8進数と16進数でのASCII文字の表現: \ooo、\xhh
ASCII文字は、8進数(\ooo
)や16進数(\xhh
)で表現することも可能です。たとえば、ASCIIで 'A' の文字コードは 65(10進数)であり、これを8進数で表現すると 101、16進数では 41 です。
print("1") # 8進数での'A'の表現 print("\x41") # 16進数での'A'の表現
実行結果はどちらも 'A' となります。このような方法は、特定のASCII文字を直接入力することが難しい場合や、文字コードそのものを強調したい場合などに便利です。
Unicode文字の表現: \N{name}、\uxxxx、\Uxxxxxxxx
Pythonのエスケープシーケンスは、Unicode文字を表示するための機能も提供します。これにより、世界中のほぼすべての言語の文字をPythonで扱うことができます。
\N{name}
を使えば、Unicode文字の名前から文字を挿入できます。一方、 \uxxxx
や \Uxxxxxxxx
を使えば、Unicodeの数値を指定して文字を挿入することが可能です。以下に具体的な例を示します。
print("\N{GREEK CAPITAL LETTER DELTA}") # Unicode名から文字を表示 print("\u0394") # Unicodeの数値から文字を表示 print("\U00000394") # Unicodeの数値から文字を表示(より多くの桁を使う場合)
実行結果はすべて 'Δ' となります。これらのエスケープシーケンスを使うと、世界中のあらゆる文字をPythonで扱うことが可能となります。
これらの特殊なエスケープシーケンスは、文字列操作のための強力なツールです。慣れるまでは少し難しく感じるかもしれませんが、これらのシーケンスをマスターすると、文字列の表現力が大幅に向上します。
raw string(エスケープシーケンスを避ける)
Pythonには「raw string」という特別な文字列の表現方法があります。これはエスケープシーケンスを無視して文字列をそのままの形で扱うための方法で、文字列の前に r
または R
を付けて表現します。
たとえば、通常の文字列内でバックスラッシュを使用すると、それはエスケープシーケンスの一部として解釈されます。しかし、ファイルパスのようにバックスラッシュをそのままの文字として扱いたい場合もあります。そのような場合にはraw stringが便利です。
print('C:\some\name') # \nが新しい行と解釈されてしまいます print(r'C:\some\name') # raw stringを使うと、\nはそのままの文字として扱われます # C:\some # ame # C:\some\name
この例からわかるように、raw stringを使うとバックスラッシュを含む文字列をそのままの形で扱うことができます。これはファイルパスや正規表現など、バックスラッシュを直接的に扱いたい場合に非常に便利です。
Pythonを1から学習したい方は
始めてPythonを勉強するのは結構難しいですよね。
でもその悩みを抱えているのは一人じゃありません。全てのPython使いが同じ道を進んできました。
Pythonをはじめとするプログラミングスキルを武器に、時間と場所に捉われない自由な生き方を目指してみませんか?今すぐ行動したい方は以下の記事をチェック!
読者料典 Python入門:学習カリキュラム ←こちらから!