Pythonのエスケープシーケンス一覧と使い方|初心者向け完全ガイド

python

Pythonで文字列を使っていて、こんなコードを見たことはありませんか?

print("こんにちは\nPython")

この \n のような記号は エスケープシーケンス と呼ばれるものです。

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

  • バックスラッシュ(\)で始まる特殊な文字の組み合わせ
  • 普通には入力できない文字(改行、タブなど)を表現する方法
  • 文字列の中で特別な意味を持つ記号

この記事では、Pythonで使えるエスケープシーケンスを初心者にも分かりやすく説明します。

スポンサーリンク

エスケープシーケンスの基本

なぜエスケープシーケンスが必要?

普通の文字列では表現が難しい場面があります:

問題1:改行を入れたい

# これはエラーになる
text = "1行目
2行目"  # 文字列の途中で改行はできない

解決方法:\n を使う

text = "1行目\n2行目"
print(text)
1行目
2行目

問題2:引用符を文字列の中で使いたい

# これはエラーになる
message = "彼は"こんにちは"と言った"  # 引用符が混乱する

解決方法:” を使う

message = "彼は\"こんにちは\"と言った"
print(message)
彼は"こんにちは"と言った

エスケープシーケンスの書き方

基本形

\文字

重要なポイント

  • 必ず「バックスラッシュ」から始める
  • スラッシュ(/)ではない
  • 大文字と小文字を区別する

よく使うエスケープシーケンス一覧

基本的なもの

エスケープ意味説明
\n改行新しい行に移る
\tタブ空白を一定間隔で入れる
\\バックスラッシュ\ マーク自体を表示
\'シングルクォート‘ を文字として表示
\"ダブルクォート” を文字として表示

使用例

改行(\n)

print("おはよう\nこんにちは\nこんばんは")
おはよう
こんにちは
こんばんは

タブ(\t)

print("名前\t年齢\t職業")
print("田中\t25\t会社員")
print("佐藤\t30\t教師")
名前	年齢	職業
田中	25	会社員
佐藤	30	教師

バックスラッシュ(\)

print("ファイルパス: C:\\Users\\Python")
ファイルパス: C:\Users\Python

引用符(’と”)

print('I\'m happy!')
print("彼は\"ありがとう\"と言った")
I'm happy!
彼は"ありがとう"と言った

その他のエスケープシーケンス

制御文字

エスケープ意味説明
\rキャリッジリターン行の先頭に戻る
\bバックスペース1文字戻る
\fフォームフィード改ページ
\v垂直タブ垂直方向のタブ

使用例

# \r の例(行の先頭に戻る)
print("Hello\rWorld")  # "World"が"Hello"を上書き
World
# \b の例(バックスペース)
print("ABC\bD")  # "C"が削除されて"ABD"
ABD

文字コードによる指定

エスケープ意味
\ooo8進数文字\141 → ‘a’
\xhh16進数文字\x61 → ‘a’
\N{name}Unicode名\N{SMILE} → ☺
\uxxxxUnicode(4桁)\u3042 → あ
\UxxxxxxxxUnicode(8桁)\U0001F600 → 😀

使用例

# 8進数
print("\141\142\143")  # abc

# 16進数
print("\x61\x62\x63")  # abc

# Unicode
print("\u3042\u3044\u3046")  # あいう
print("\U0001F600")  # 😀

実践的な使用例

例1:きれいな表を作る

def print_menu():
    print("=" * 30)
    print("メニュー")
    print("=" * 30)
    print("1.\t新規作成")
    print("2.\tファイルを開く")
    print("3.\t保存")
    print("4.\t終了")
    print("=" * 30)

print_menu()
==============================
メニュー
==============================
1.	新規作成
2.	ファイルを開く
3.	保存
4.	終了
==============================

例2:CSVデータの表示

def print_csv_data():
    # ヘッダー
    print("名前\t年齢\t都市")
    print("-" * 20)
    
    # データ
    data = [
        ("田中太郎", 25, "東京"),
        ("佐藤花子", 30, "大阪"),
        ("鈴木一郎", 35, "名古屋")
    ]
    
    for name, age, city in data:
        print(f"{name}\t{age}\t{city}")

print_csv_data()
名前	年齢	都市
--------------------
田中太郎	25	東京
佐藤花子	30	大阪
鈴木一郎	35	名古屋

例3:進行状況の表示

import time

def show_progress():
    for i in range(6):
        print(f"\r進行状況: {'■' * i}{'□' * (5-i)} {i*20}%", end="")
        time.sleep(0.5)
    print("\n完了!")

show_progress()

例4:ログファイルの作成

import datetime

def write_log(message):
    timestamp = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    log_entry = f"[{timestamp}]\t{message}\n"
    
    with open("log.txt", "a", encoding="utf-8") as file:
        file.write(log_entry)
    
    print(f"ログに記録: {message}")

# 使用例
write_log("アプリケーション開始")
write_log("ユーザーがログイン")
write_log("ファイルを保存")

raw文字列 – エスケープを無効にする方法

raw文字列とは?

エスケープシーケンスを無効にして、バックスラッシュをそのまま文字として扱う方法です。

通常の文字列

path = "C:\Users\name\Documents"  # \n や \D が問題になる可能性
print(path)

raw文字列

path = r"C:\Users\name\Documents"  # rを前に付ける
print(path)
C:\Users\name\Documents

raw文字列の使用場面

1. ファイルパス

# Windows のファイルパス
file_path = r"C:\Program Files\Python\python.exe"
print(file_path)

# 相対パス
relative_path = r".\data\input.txt"
print(relative_path)

2. 正規表現

import re

# 通常の文字列(エスケープが二重になって読みにくい)
pattern1 = "\\d+\\.\\d+"

# raw文字列(読みやすい)
pattern2 = r"\d+\.\d+"

text = "価格は123.45円です"
result = re.findall(pattern2, text)
print(result)  # ['123.45']

3. SQL文

# 複雑なSQL文
sql = r"""
SELECT name, age 
FROM users 
WHERE age > 20 
  AND name LIKE '%田中%'
"""
print(sql)

raw文字列の注意点

末尾にバックスラッシュは置けない

# これはエラー
# path = r"C:\Users\"

# 解決方法1:通常の文字列と結合
path = r"C:\Users" + "\\"

# 解決方法2:os.path.join を使う
import os
path = os.path.join(r"C:\Users", "")

よくある間違いと解決方法

間違い1:スラッシュとバックスラッシュの混同

# 間違い
print("改行/n")  # /n は効果なし

# 正しい
print("改行\n")  # \n が改行になる

間違い2:エスケープシーケンスの大文字小文字

# 間違い
print("タブ\T")  # \T は無効

# 正しい
print("タブ\t")  # \t が正しい

間違い3:不正なエスケープシーケンス

# 間違い(警告が出る)
text = "\d"  # \d は正規表現では意味があるが、文字列では無効

# 正しい方法1:raw文字列を使う
text = r"\d"

# 正しい方法2:バックスラッシュをエスケープ
text = "\\d"

間違い4:引用符の混在

# 間違い
text = 'I'm happy'  # 引用符が競合

# 正しい方法1:エスケープを使う
text = 'I\'m happy'

# 正しい方法2:異なる引用符を使う
text = "I'm happy"

# 正しい方法3:三重引用符を使う
text = '''I'm happy'''

応用例とベストプラクティス

多言語対応

def create_multilingual_message():
    messages = {
        'ja': 'こんにちは\nPythonの世界へようこそ',
        'en': 'Hello\nWelcome to Python world',
        'fr': 'Bonjour\nBienvenue dans le monde Python'
    }
    
    for lang, message in messages.items():
        print(f"[{lang.upper()}]")
        print(message)
        print("-" * 20)

create_multilingual_message()

設定ファイルの作成

def create_config_file():
    config_content = '''[database]
host = localhost
port = 5432
name = myapp

[logging]
level = INFO
file = app.log
format = %(asctime)s\t%(levelname)s\t%(message)s
'''
    
    with open('config.ini', 'w', encoding='utf-8') as file:
        file.write(config_content)
    
    print("設定ファイルを作成しました")

create_config_file()

コマンドラインツール

def print_help():
    help_text = r"""
使用方法: python script.py [オプション] ファイル名

オプション:
  -h, --help     このヘルプを表示
  -v, --verbose  詳細な出力
  -o, --output   出力ファイル名を指定
  
例:
  python script.py input.txt
  python script.py -v -o output.txt input.txt
  python script.py --help
"""
    print(help_text)

print_help()

トラブルシューティング

文字化けの対処

# 日本語を含む文字列の正しい扱い
def safe_print(text):
    try:
        print(text)
    except UnicodeEncodeError:
        # エンコードエラーの場合、安全な文字のみ表示
        safe_text = text.encode('ascii', errors='replace').decode('ascii')
        print(f"警告: 一部の文字を表示できません: {safe_text}")

# 使用例
safe_print("日本語テスト\n改行テスト")

デバッグ用の文字列表示

def debug_string(text):
    """文字列の中身を詳しく表示する関数"""
    print(f"元の文字列: {repr(text)}")
    print(f"表示結果:")
    print(text)
    print(f"文字数: {len(text)}")
    print("-" * 30)

# 使用例
debug_string("Hello\nWorld\t!")
debug_string(r"Hello\nWorld\t!")

まとめ

Pythonのエスケープシーケンスは、文字列を自在に操るための重要なテクニックです。

重要なポイント

  • 基本の3つ: \n(改行)、\t(タブ)、\\(バックスラッシュ)
  • 引用符: \'(シングル)、\"(ダブル)
  • raw文字列: r""でエスケープを無効化
  • Unicode対応: \u\Uで特殊文字も表現可能

よく使うエスケープシーケンス一覧

# 基本
"\n"    # 改行
"\t"    # タブ
"\\"    # バックスラッシュ
"\'"    # シングルクォート
"\""    # ダブルクォート

# 制御文字
"\r"    # キャリッジリターン
"\b"    # バックスペース

# 文字コード
"\x41"  # 16進数(A)
"\u3042" # Unicode(あ)

使い分けのコツ

  • テキスト整形: \n\tを活用
  • ファイルパス: raw文字列 r""を使用
  • 正規表現: raw文字列で読みやすく
  • 多言語対応: Unicodeエスケープを活用

コメント

タイトルとURLをコピーしました