エスケープシーケンスについて学んでいきましょう。
エスケープシーケンスとは、ある文字に違う役割をもたせる時に使われる記号のことをいいます。
早速、具体例をみていきましょう。
エスケープシーケンスの具体例
エスケープシーケンスの具体例を順番に紹介します。
1 \n(改行)
エスケープシーケンスの意味と照らし合わせながらみていきましょう。
先ほど、エスケープシーケンスは「ある文字に違う役割をもたせる」と説明しました。
ここで、nというのはただの文字ですよね。
しかし、エスケープシーケンスを付けることで、nに違う役割を持たせることができるのです。
具体的には、nをエスケープすることで「改行」という意味を持たせることができます。
まずは、エスケープシーケンスを使わないコードを見てみましょう。
コードnumber = "tentimes"
print(number)
アウトプットtentimes
tentimesという形で、nはそのまま出力されました。
次に、エスケープシーケンスを使ったコードです。
コードnumber = "te\ntimes"
print(number)
アウトプットte
times
\nが改行として使われていることが分かります。
なお、\nが改行の意味を持ちますので、実行結果にnは入りません([te] + [\n] + [times]というイメージです)。
(まとめ エスケープ前:n →エスケープ後:改行)
2 引用符( ' と " )
次は引用符です。
変数に文字列を代入するときには、以下のように書きますよね。
コードname = 'good to live'
print(name)
アウトプットgood to live
しかし、文字列の中に引用符が入っている場合はどうなるでしょうか?
コードname = 'there's a cake'
print(name)
アウトプットSyntaxError : invalid syntax
間違った文法です。というエラーが出てしまいました。
これは、Pythonがthereの後の引用符まで(there)を文字列として認識してしまったからです。
その結果、thereの後はPythonの文法上正しくない文字となってしまったので、エラーになってしまったのです。
このエラーを避けるためにエスケープシーケンスを使います。
コードname = 'there\'s a cake'
print(name)
アウトプットthere's a cake
正しく出力されました。
これは、引用符の本来の機能である「文字列の定義」ではなく、ただの記号(シンボル)として認識されたからです。
(まとめ エスケープ前:文字列の定義 →エスケープ後:ただの記号)
3 \t(タブ)
tをエスケープするとタブとして認識されます。
早速、具体的な例でみていきましょう。
コードcount = 's\trike'
print(count)
アウトプットs rike
タブとして認識されているので、スペースが空いていることが分かります。
(まとめ エスケープ前:t →エスケープ後:タブ)
4 \uxxxx(ユニコード)
次は、\uxxxxです。
もともと、「uxxxx」というのは、unicode型の文字列を示しています。
そして、unicodeと文字列は一対一の関係があります。
例えば、unicodeの「u0040」は、文字列の「@」を意味します。
uxxxxとユニコードをエスケープすることで、unicode型の文字列をstr型の文字列として表示することができます。
具体的な例で見てみましょう。
コードunicode = 'u0040'
print(unicode)
アウトプットu0040
コードunicode = '\u0040'
print(unicode)
アウトプット@
エスケープシーケンスを使うことで、ユニコード文字列で書かれた文字列を出力することができました。
(まとめ エスケープ前:u →エスケープ後:ユニコード文字列)
なお、unicode文字列について詳しく知りたい方は、Python3での文字列の扱いという記事を読んでみて下さい。
5 \b(バックスペース)
\bはバックスペースを意味します。
具体例をみてみましょう。
コードanimal = 'Pi\bg'
print(animal)
アウトプットPg
\bがバックスペースとしての役割を果たしていますので、\bの前の文字であるiが消えています。
(まとめ エスケープ前:b →エスケープ後:バックスペース)
6 \\(エスケープシーケンスそのもの)
最後は、エスケープシーケンスそのものです。
\マークを表示させたいけど、\自体がエスケープシーケンスの役割を持っているということから、エスケープシーケンスにもう一つ\を重ね、エスケープシーケンス自体をエスケープする、というものです。
これも具体例を見た方が早いと思いますので、例を見てみましょう。
コードprice = 'JPY \\100'
print(price)
アウトプットJPY \100
エスケープシーケンスを二回重ねて使うことによって、エスケープシーケンス自体が記号(シンボル)として使われたことが分かります。
(まとめ エスケープ前:エスケープシーケンス →エスケープ後:ただの記号)
エスケープシーケンスのまとめ
(1) エスケープシーケンスは、本来とは違う機能を発揮させるために使われる。
エスケープシーケンスを学んだ後は
データの種類の一つであるリストについて学んでいきましょう。
unicodeについて気になる方は、Python3での文字列の扱いという記事を読んでunicodeへの理解を深めても良いでしょう。