Python 複数行文字列の書き方|3つのクォートの使い方
Python複数行文字列の書き方を初心者向けに解説。トリプルクォートの使い方から実践的な活用例、エスケープ文字との使い分けまで詳しく説明します。
Python 複数行文字列の書き方|3つのクォートの使い方
みなさん、Pythonで長い文章やテンプレートを扱うときに困ったことはありませんか?
「改行文字を使うしかないの?」「もっと読みやすい書き方はないの?」
こんな悩みを抱いている方も多いでしょう。
実は、Pythonにはトリプルクォートという便利な機能があります。 この機能を使えば、複数行にわたる文字列を自然な形で書くことができるんです。
この記事では、トリプルクォートを使った複数行文字列の書き方を、基本から実践的な活用例まで詳しく解説します。 あなたもより読みやすく、保守しやすいコードを書いてみませんか?
トリプルクォートって何?
まず、トリプルクォートの基本的な概念を理解しましょう。
トリプルクォートの基本概念
トリプルクォートは、3つの引用符("""
または '''
)を使って複数行の文字列を定義する方法です。
この記法を使うことで、改行を含む長い文字列を自然な形で書くことができます。
文字列の可読性を大幅に向上させる便利な機能なんです。
通常の文字列との違い
通常の文字列と複数行文字列の違いを見てみましょう。
# 通常の文字列(改行文字を使用)normal_string = "これは最初の行です。これは2行目です。これは3行目です。"print(normal_string)
# トリプルクォートを使った複数行文字列multiline_string = """これは最初の行です。これは2行目です。これは3行目です。"""print(multiline_string)
実行結果はこちらです。
これは最初の行です。
これは2行目です。
これは3行目です。
これは最初の行です。
これは2行目です。
これは3行目です。
どちらも同じ結果を出力しますが、トリプルクォートの方が読みやすくなります。
改行文字(
)を使わずに、実際の改行で文字列を書けるのが大きな特徴です。
基本的な使い方
トリプルクォートの基本的な使い方を学びましょう。
ダブルクォート3つ(""")
最も一般的なトリプルクォートの使い方です。
# ダブルクォート3つの例message = """こんにちは!Python プログラミングの世界へようこそ。今日は複数行文字列について学習します。
楽しく学んでいきましょう!"""
print(message)print(f"文字列の長さ: {len(message)}")
実行結果はこちらです。
こんにちは!
Python プログラミングの世界へようこそ。
今日は複数行文字列について学習します。
楽しく学んでいきましょう!
文字列の長さ: 64
ダブルクォート3つを使うことで、自然な複数行文字列を作成できます。
シングルクォート3つ(''')
シングルクォート3つでも同様に複数行文字列を作成できます。
# シングルクォート3つの例description = '''このプログラムは以下の機能を提供します:
1. データの読み込み2. データの処理3. 結果の出力
詳細については、マニュアルを参照してください。'''
print(description)
実行結果はこちらです。
このプログラムは以下の機能を提供します:
1. データの読み込み
2. データの処理
3. 結果の出力
詳細については、マニュアルを参照してください。
ダブルクォートとシングルクォートの動作に違いはありません。
クォートの使い分け
文字列の中にクォートが含まれる場合の使い分けです。
# 文字列内にダブルクォートが含まれる場合text_with_double = '''彼は言いました:"今日は良い天気ですね。""散歩に行きませんか?"'''
# 文字列内にシングルクォートが含まれる場合text_with_single = """It's a beautiful day!Don't forget your umbrella."""
print(text_with_double)print("---")print(text_with_single)
実行結果はこちらです。
彼は言いました:
"今日は良い天気ですね。"
"散歩に行きませんか?"
---
It's a beautiful day!
Don't forget your umbrella.
内部に含まれるクォートに応じて、適切な形式を選択しましょう。
インデントの扱い
複数行文字列では、インデントの扱いに注意が必要です。
インデントが含まれる場合
複数行文字列では、インデント(空白やタブ)もそのまま保持されます。
def create_message(): # インデントが保持される例 indented_text = """ メニュー一覧: 1. ファイルを開く 2. ファイルを保存 3. 終了""" return indented_text
print("インデント付き:")print(repr(create_message()))print("表示結果:")print(create_message())
実行結果はこちらです。
インデント付き:
' メニュー一覧:
1. ファイルを開く
2. ファイルを保存
3. 終了'
表示結果:
メニュー一覧:
1. ファイルを開く
2. ファイルを保存
3. 終了
インデントも文字列の一部として保持されることを覚えておきましょう。
インデントを避ける書き方
意図しないインデントを避ける書き方を見てみましょう。
def create_clean_message(): clean_text = """メニュー一覧: 1. ファイルを開く 2. ファイルを保存 3. 終了""" return clean_text
print("クリーンな書き方:")print(create_clean_message())
実行結果はこちらです。
クリーンな書き方:
メニュー一覧:
1. ファイルを開く
2. ファイルを保存
3. 終了
文字列の最初の行のインデントを調整することで、意図した見た目になります。
実践的な活用例
トリプルクォートの実践的な使い方を見てみましょう。
HTMLテンプレート
HTMLテンプレートの作成に複数行文字列を活用する例です。
def create_html_page(title, content): html_template = """<!DOCTYPE html><html lang="ja"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>{title}</title></head><body> <header> <h1>{title}</h1> </header> <main> {content} </main> <footer> <p>© 2024 My Website</p> </footer></body></html>""" return html_template.format(title=title, content=content)
# 使用例page_title = "Python学習サイト"page_content = """<p>Pythonの基礎から応用まで学べます。</p><ul> <li>基本文法</li> <li>データ構造</li> <li>関数とクラス</li></ul>"""
html_page = create_html_page(page_title, page_content)print(html_page[:200] + "...") # 最初の200文字だけ表示
実行結果はこちらです。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Python学習サイト</title>
</head>
<bod...
HTMLテンプレートを読みやすく管理できます。
SQLクエリ
複雑なSQLクエリを読みやすく書く例です。
def generate_user_report_query(department, start_date, end_date): query = """ SELECT u.user_id, u.username, u.email, d.department_name, COUNT(p.project_id) as project_count, SUM(t.hours) as total_hours FROM users u JOIN departments d ON u.department_id = d.department_id LEFT JOIN projects p ON u.user_id = p.assigned_user LEFT JOIN time_logs t ON p.project_id = t.project_id WHERE d.department_name = '{department}' AND t.log_date BETWEEN '{start_date}' AND '{end_date}' GROUP BY u.user_id, u.username, u.email, d.department_name ORDER BY total_hours DESC """ return query.format( department=department, start_date=start_date, end_date=end_date )
# 使用例sql_query = generate_user_report_query("開発部", "2024-01-01", "2024-12-31")print(sql_query)
複雑なSQLクエリも整理された形で書けます。
改行やインデントを使うことで、SQLの構造が一目で分かりますね。
メッセージテンプレート
アプリケーションのメッセージテンプレートを管理する例です。
class MessageTemplates: WELCOME_MESSAGE = """ ┌─────────────────────────────────┐ │ Python 学習アプリへようこそ │ ├─────────────────────────────────┤ │ │ │ 1. 基礎文法を学ぶ │ │ 2. 練習問題に挑戦 │ │ 3. プロジェクトを作る │ │ 4. ヘルプを表示 │ │ │ └─────────────────────────────────┘ 番号を選択してください: """ ERROR_MESSAGE = """ ⚠️ エラーが発生しました エラーの詳細: {error_details} 対処方法: 1. 入力内容を確認してください 2. 再度実行してください 3. 問題が続く場合は、サポートにお問い合わせください """
# 使用例print(MessageTemplates.WELCOME_MESSAGE)
error_msg = MessageTemplates.ERROR_MESSAGE.format( error_details="ファイルが見つかりませんでした")print(error_msg)
ユーザー向けメッセージを統一的に管理できます。
見た目も美しく、メンテナンスも簡単になります。
docstringとしての活用
関数やクラスの説明文書としても使えます。
関数のドキュメント
関数の説明をdocstringとして書く例です。
def calculate_bmi(weight, height): """BMI(体格指数)を計算する関数 この関数は体重と身長からBMIを計算し、 体格の判定結果も合わせて返します。 Args: weight (float): 体重(kg) height (float): 身長(m) Returns: dict: BMI値と判定結果を含む辞書 - bmi (float): 計算されたBMI値 - category (str): 体格の判定結果 Example: >>> result = calculate_bmi(70, 1.75) >>> print(result['bmi']) 22.86 >>> print(result['category']) 普通体重 """ bmi = weight / (height ** 2) if bmi < 18.5: category = "低体重" elif bmi < 25: category = "普通体重" elif bmi < 30: category = "肥満(1度)" else: category = "肥満(2度以上)" return { "bmi": round(bmi, 2), "category": category }
# docstringの確認print(calculate_bmi.__doc__)
詳細なドキュメントをdocstringとして書くことで、関数の使い方が明確になります。
他の開発者(未来の自分も含む)がコードを理解しやすくなります。
複数行文字列の分割と処理
複数行文字列を分割して処理する例も見てみましょう。
# 複数行のデータcsv_data = """名前,年齢,職業田中太郎,30,エンジニア佐藤花子,25,デザイナー鈴木一郎,35,マネージャー山田美咲,28,営業"""
# 行ごとに分割lines = csv_data.split('')print("行数:", len(lines))print("ヘッダー:", lines[0])
print("データ行:")for i, line in enumerate(lines[1:], 1): values = line.split(',') print(f" {i}: {values[0]}さん ({values[1]}歳) - {values[2]}")
実行結果はこちらです。
行数: 5
ヘッダー: 名前,年齢,職業
データ行:
1: 田中太郎さん (30歳) - エンジニア
2: 佐藤花子さん (25歳) - デザイナー
3: 鈴木一郎さん (35歳) - マネージャー
4: 山田美咲さん (28歳) - 営業
複数行文字列を構造化データとして処理できます。
まとめ
Python の複数行文字列とトリプルクォートは、文字列処理を効率化する重要な機能です。
今回学んだポイント
- トリプルクォート(
"""
または'''
)で複数行文字列を作成できる - インデントも含めて文字列が保持される
- HTMLテンプレートやSQLクエリの記述に便利
- docstringとして関数やクラスの説明に活用できる
- 文字列の分割や整形処理と組み合わせて活用できる
複数行文字列を使いこなすことで、より読みやすく保守しやすいPythonコードを書けるようになります。
ぜひ実際のプログラミングでトリプルクォートを活用してみてください! コードの可読性が格段に向上しますよ。