Pythonのエスケープシーケンス:\n(改行)や \t(タブ)、\(バックスラッシュ)の使い方

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文字列が便利です。
  • 行末の \ は、文字列ではなくコード自体を次の行に継続させるための記述です。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次