Pythonでは、文字列をシングルクォート(')またはダブルクォート(")で囲みます。しかし、文字列の中に「It's」のようにクォート自体を含めたい場合や、改行やタブといった特殊な制御文字を入れたい場合があります。
そのまま記述すると構文エラー(SyntaxError)になるか、意図した通りに表示されません。
# これは SyntaxError になります
# text = 'It's a syntax error.'
この問題を解決するのが「エスケープシーケンス」です。この記事では、バックスラッシュ(\、Windows環境では ¥ と表示されることもあります)を使ったエスケープシーケンスの基本を解説します。
エスケープシーケンスとは
エスケープシーケンスとは、バックスラッシュ(\)とそれに続く1文字(または数文字)の組み合わせで、特別な意味を持つ文字を表す方法です。
バックスラッシュは、Pythonインタプリタに対し「次に来る文字は、通常の文字としてではなく、特別な意味で解釈するように」と指示する役割を持ちます。
代表的なエスケープシーケンス
以下は、Pythonでよく使用される主要なエスケープシーケンスです。
| シーケンス | 意味 |
\' | シングルクォート |
\" | ダブルクォート |
\\ | バックスラッシュ自体 |
\n | 改行(ニューライン) |
\t | 水平タブ |
\r | キャリッジリターン(行頭復帰) |
エスケープシーケンスの使用例
1. クォート文字のエスケープ (\', \")
文字列を定義しているクォートと同じ種類のクォートを文字列内で使用する場合に必須です。
# 1. シングルクォート(')の中で ' を使う
text_single = 'It\'s a fine day.'
print(text_single)
# 2. ダブルクォート(")の中で " を使う
text_double = "He said, \"OK, let's go.\""
print(text_double)
# 3. 混在させる(この方が読みやすい場合も多い)
text_mixed = "It's a \"fine\" day."
print(text_mixed)
実行結果:
It's a fine day.
He said, "OK, let's go."
It's a "fine" day.
2. 特殊な制御文字 (\n, \t)
\n(改行)と \t(タブ)は、出力を整形する際によく使われます。
# ヘッダーとデータをタブで区切って整形する
header = "ProductID\tName\tPrice"
row1 = "A-001\t\tApple\t150"
row2 = "B-002\t\tBanana\t100"
# \n で各行を改行する
report = header + "\n" + row1 + "\n" + row2
print(report)
実行結果:
ProductID Name Price
A-001 Apple 150
B-002 Banana 100
3. バックスラッシュ自体 (\\)
Windowsのファイルパスのように、バックスラッシュ(\)そのものを文字列に含めたい場合は、\\ と2回重ねて記述します。
# C:\Users\Default というパスを表現したい
file_path = "C:\\Users\\Default\\Documents"
print(file_path)
実行結果:
C:\Users\Default\Documents
Raw文字列 (r”…”):エスケープの無効化
Windowsのパスや正規表現のように、バックスラッシュが多用される文字列を扱う場合、\\ と書き続けるのは非常に面倒です。
このような場合、文字列の開始クォートの直前に r を置くことで、**Raw文字列(生文字列)**として扱うことができます。Raw文字列の中では、バックスラッシュはエスケープ文字としての特殊な意味を失い、単なる文字として扱われます。
# Raw文字列 (r"...") を使用
file_path_raw = r"C:\Users\Default\Documents"
print(file_path_raw)
実行結果:
C:\Users\Default\Documents
\\ と書く必要がなくなり、見たままのパスを記述できるため、可読性が向上します。
注意:コードの行継続 (\)
エスケープシーケンスと似ていますが、異なる機能として「行継続」があります。
コードが長くなりすぎた場合、行の末尾にバックスラッシュ \ を置くと、コードが次の行に続いているとみなされます。
# 1行のコードとして長すぎる場合
long_message = "This is a very long text " \
"that continues to the next line in the source code."
print(long_message)
実行結果:
This is a very long text that continues to the next line in the source code.
この \ と改行は、最終的な文字列の値には含まれません。あくまでソースコードの見た目上の改行です。\n(文字列内の改行)とは異なる点に注意してください。
まとめ
- バックスラッシュ(
\)は、\n(改行)や\t(タブ)のような特殊文字を表現したり、\'や\"のようにクォート文字自体をエスケープしたりするために使います。 - バックスラッシュ自体を文字として使う場合は
\\と記述します。 - Windowsのパスなど、エスケープを無効化したい場合は
r"..."というRaw文字列が便利です。 - 行末の
\は、文字列ではなくコード自体を次の行に継続させるための記述です。
