Pythonで文字列を扱うとき、バックスラッシュ(\
)を使った特殊な記号を見かけたことはありませんか?
これは「エスケープシーケンス」と呼ばれる仕組みで、Pythonでは文字列操作に欠かせない知識です。
この記事では、エスケープシーケンスの基本と、バックスラッシュを特別扱いさせない方法「raw文字列リテラル」について、わかりやすく整理します。
エスケープシーケンスとは?
エスケープシーケンスとは、バックスラッシュ(\
)を使って、文字列内で特殊な指示を出すための書き方です。
通常の文字列処理を「逃れる(escape)」という意味から、この名前が付けられています。
よく使われるエスケープシーケンスは次のとおりです。
記号 | 意味 | 出力例 |
---|---|---|
\n |
改行 | 改行される |
\t |
タブ(空白) | 空白が入る |
\\ |
バックスラッシュそのもの | \ |
\' |
シングルクォート | ' |
\" |
ダブルクォート | " |
実際の例
\n
改行
print("Hello\nWorld")
# 出力
Hello
World
\t
タブ(空白)
print("Python\tis\tfun")
# 出力
Python is fun
\'
シングルクォート
print('It\'s a pen.')
# 出力
It's a pen.
\"
ダブルクォート
print("She said, \"Hello!\"")
# 出力
She said, "Hello!"
エスケープシーケンスに注意すべき場面
例えばWindowsのファイルパスを文字列で書くとき、
print("C:\Users\Name\Desktop")
このように書くと、\U
や \N
が未定義のエスケープシーケンスとして誤解釈され、エラーや意図しない動作になることがあります。
Pythonでは、バックスラッシュが出現した時点で「これはエスケープシーケンスかも?」と考えてしまうためです。
バックスラッシュを「そのまま」使いたいとき
バックスラッシュを通常の文字として使いたい場合は、2回書く必要があります。
print("C:\\Users\\Name\\Desktop")
# 出力
C:\Users\Name\Desktop
しかしこれでは毎回バックスラッシュを2回書く必要があり、非常に面倒です。
ここで便利なのが「raw文字列リテラル」です。
raw文字列リテラルとは?
raw文字列リテラルとは、文字列リテラルの前に r
を付けることで、
バックスラッシュを特別扱いせず「そのままの文字」として扱う方法です。
print(r"C:\Users\Name\Desktop")
# 出力
C:\Users\Name\Desktop
バックスラッシュをエスケープせず、見たままの形で文字列として扱えます。
書き方まとめ
- 通常の文字列:
"文字列"
- raw文字列リテラル:
r"文字列"
r
は必ず文字列の直前に書きます。
raw文字列リテラルの注意点
1. 最後にバックスラッシュだけ置くとエラーになる
raw文字列でも、最後がバックスラッシュのままだと構文エラーになります。
# ❌ エラー例
print(r"C:\Users\Name\")
対策としては、連結を使うか、バックスラッシュを2つ書きます。
# ✅ 正しい例
print(r"C:\Users\Name" "\\")
# または
print(r"C:\Users\Name\\")
2. クォートは必ず半角で!
Pythonでは、文字列を囲むクォート('
や "
)は半角でなければなりません。
全角クォート(“
や”
)を使うと文法エラーになります。
3. r"..."r"..."
のように r
を2回連続では書けない
次のように書くとエラーになります。
# ❌ エラー例
print(r"C:\Users" r"\Name")
raw文字列リテラルは、1つの文字列リテラルの前にだけ r
を付ける必要があります。
連結するときは通常の文字列として連結するか、別の工夫をしましょう。
# ✅ 正しい例
print(r"C:\Users" "\\Name")
または一続きのraw文字列で書きます。
print(r"C:\Users\Name")
4. クォート文字そのものを含めたい場合は注意が必要
raw文字列でもクォート記号('
や "
)を含める場合は、エスケープが必要です。
# ✅ 正しい例
print(r"He said, \"Hello!\"")
raw文字列はバックスラッシュのエスケープを無効にしますが、クォート記号に関しては通常の文字列ルールと同じ扱いになります。
まとめ
- エスケープシーケンスは、バックスラッシュを使って特殊な動作を指示する記法
- 例:
\n
(改行)、\t
(タブ)、\\
(バックスラッシュそのもの)、\'
(シングルクォート)、\"
(ダブルクォート) - バックスラッシュをそのまま使いたいときはraw文字列リテラル(
r"..."
)を使う - raw文字列リテラルでも、末尾バックスラッシュやクォートには注意が必要
- Windowsパスや正規表現を書くときに特に役立つ
エスケープシーケンスとraw文字列リテラルを正しく理解することで、 Pythonの文字列操作が格段にスムーズになると感じました。