sec01 - エスケープシーケンス

エスケープシーケンスとは

エスケープシーケンスとは、特殊な制御を行うことができる文字列のことを言います。例えば、"\n"と記述すると『改行』を行うことができます。
(※ "\"はバックスラッシュという記号で、日本語キーボードの場合は"¥"キーを押下するとバックスラッシュを入力することができます。VisualStudioCodeで入力した場合は"\"で表示されます。)

このレクチャーでは、Pythonで用意されているエスケープシーケンスのうち、よく使われるものを紹介します。Pythonの全てのエスケープシーケンスを確認したい場合は、公式ドキュメントを参照してください。

https://docs.python.org/ja/3.13/reference/lexical_analysis.html#escape-sequences

シングル/ダブル クォーテーション

前回のレクチャーで、'I'm Nico.'のように両サイドがシングルクォーテーションで挟まれた中に、シングルクォーテーションが存在しているとエラーになるというお話をしました。

'I'm Nico.'  # エラーになる

この場合、解決策の一つとして、両サイドをダブルクォーテーションにすることを挙げました。

"I'm Nico."  # 両サイドがダブルクォーテーションならOK

上記解決方法でも問題は無いのですが、文字列の中にシングルクォーテーションとダブルクォーテーションが両方出てくることも可能性としてはあるので、エスケープシーケンスを使う方法も覚えておきましょう。次のようにコードを記述します。

'I\'m Nico.'  # \' と記述することで、両サイドがシングルでもエラーにならない
Pythonは、クォーテーション単体の場合は『文字列の始点・終点』という記号として解釈しますが、\'と記述することで『文字としての"シングルクォーテーション"』と解釈します。上記1行目のコードを、Pyhtonは次のように解釈します。
  1. '(最初のシングルクォーテーション) → 文字列の始点(記号として認識)
  2. I → 文字のI
  3. \' → 文字の'
  4. m → 文字のm
  5. ....
というように処理していき、『文字列の終点』を示す次のシングルクォーテーションが来るまで、文字列が続いているものと解釈します。そのため、エラーにならずに済みます。

それでは、シングルクォーテーションのエスケープシーケンスを使った例で、実行結果を確認してみましょう。

greeting_by_nico = 'I\'m Nico. Nice to meet you.'
print(greeting_by_nico)

実行した結果、下図のように文字が出力されていればOKです。

クォーテーションについては、ダブルクォーテーションでも同じように記述することができます。

\"と記述することで、文字の"として認識されます。

改行

\nと記述すると、改行として認識されます。

次のコードを実行して結果を確認してみましょう。(I'm Nico.Nice to meet you.の間に改行のエスケープシーケンスが記述されています。)

greeting_by_nico = "I'm Nico.\nNice to meet you."
print(greeting_by_nico)

コードを実行すると、I'm Nico.の後に改行が入り、新しい行にNice to meet you.が出力されます。

水平タブ (TAB)

\tと記述すると、水平タブ(TAB)として認識されます。

タブは、いい塩梅にスペースを入れて見やすく整形してくれます。(実際の表示幅はエディタや環境によって変わります。また、表示させる文字列の長さによっては見た目が崩れる場合があります。)

次のコードを実行して結果を確認してみましょう。各print文は、項目ごとにタブで区切っています。

print('Name\tAge\tCity')
print('Nico\t21\tTokyo')
print('Nancy\t9\tOsaka')

下図のような出力になったかと思います。Age列とCity列の左端がまっすぐ縦に揃っています。タブは、各項目の左端を揃えるようにスペースを入れて出力してくれるので、結果が見やすくなります。

他にも、次のような記述方法があります。

name = 'Nico'
age = 21
print('Name:\t', name)
print('Age:\t', age)

コードを実行してprint出力すると、変数の値は下図に示すように垂直に揃えられ、読みやすくなります。

バックスラッシュ

\\と記述すると、文字としてのバックスラッシュ(\)として認識されます。
\\の使いどころとしては、次のようなWindowsのディレクトリ(フォルダ構造)を表す場合になります。
'c:\Users\nico\Desktop'
上記コードの場合、VisualStudioCodeでは、\nico\nの色が変わっているのが確認できます。\nは"改行"を表すエスケープシーケンスでした。

このままではnicoというディレクトリ名を正しく反映させることが出来ないということになります。これを解決するには、次のようにコードを記述します。

'c:\\Users\\nico\\Desktop'
上記コードのように、\\と記述することで、文字としてバックスラッシュを認識させることができ、\nなどの組み合わせをエスケープシーケンスとして機能させないようにできます。
ディレクトリの区切り文字について
Windowsの場合はバックスラッシュ(\)がディレクトリの区切り文字として使用されており、MacOSやLinuxの場合はスラッシュ(/)が区切り文字になります。(※日本語版のWindowsの場合、ディレクトリの区切り文字は¥で表示されますが、内部的にはバックスラッシュが使用されています。)
それぞれのOSでディレクトリの区切り文字が定められていますが、Pythonの場合は、MacやLinuxはスラッシュ(/)でパスを表記し、Windowsの場合はバックスラッシュ(\)もしくはスラッシュ(/)でパスを表記することが出来ます。

(※ Windowsの場合、スラッシュ(/)を使用しても多くの場合は問題なく動作しますが、環境によっては動かない(意図しない挙動になる)可能性がありますので、必ずテストを行い、求める挙動になっているか確認してください。)