Python長い文字列・複数行文字列の書き方完全ガイド【初心者向け】

Pythonで長い文字列や複数行にわたる文字列を扱う際、どの方法を使えばよいか迷ったことはありませんか?本記事では、Pythonにおける長い文字列と複数行文字列の書き方を、実用的なサンプルコードとともに詳しく解説します。

複数行文字列とは

複数行文字列とは、改行文字を含む文字列のことで、HTMLテンプレート、SQLクエリ、長いメッセージなどを記述する際に頻繁に使用されます。Pythonでは複数の方法で複数行文字列を作成できます。

トリプルクォート(”””)を使った方法

最も一般的で推奨される方法は、ダブルクォート3つ(”””)を使用する方法です。

# 基本的な複数行文字列
message = """これは複数行の
文字列の例です。
改行文字も含まれます。"""

print(message)

出力結果:

これは複数行の
文字列の例です。
改行文字も含まれます。

HTMLテンプレートの例

html_template = """
<!DOCTYPE html>
<html>
<head>
    <title>サンプルページ</title>
</head>
<body>
    <h1>ようこそ</h1>
    <p>これはサンプルページです。</p>
</body>
</html>
"""

print(html_template)

シングルクォートのトリプル(”’)を使った方法

シングルクォート3つ(”’)も同様に使用できます。ダブルクォートが文字列内に多く含まれる場合に便利です。

# シングルクォートのトリプルを使用
text = '''この文字列では
"ダブルクォート"を
自由に使えます。'''

print(text)

文字列の連結による長い文字列の作成

括弧内で文字列を連結することで、長い文字列を見やすく分割できます。

# 文字列の連結
long_message = (
    "これは非常に長い文字列で、"
    "複数行に分けて書くことで"
    "可読性を向上させています。"
)

print(long_message)

出力結果:

これは非常に長い文字列で、複数行に分けて書くことで可読性を向上させています。

プラス演算子を使った連結

# +演算子による連結
sql_query = (
    "SELECT name, age, email "
    + "FROM users "
    + "WHERE age > 18 "
    + "ORDER BY name ASC"
)

print(sql_query)

バックスラッシュを使った行継続

バックスラッシュ(\)を使って行を継続することもできます。

# バックスラッシュによる行継続
long_string = "これは非常に長い文字列で、" \
              "バックスラッシュを使って" \
              "複数行に分けています。"

print(long_string)

f文字列(f-string)での複数行文字列

Python 3.6以降では、f文字列と組み合わせて動的な複数行文字列を作成できます。

# 変数の定義
name = "田中"
age = 25
city = "東京"

# f文字列による複数行文字列
profile = f"""
ユーザー情報:
名前: {name}
年齢: {age}歳
住所: {city}
"""

print(profile)

出力結果:

ユーザー情報:
名前: 田中
年齢: 25歳
住所: 東京

実際の使用例とベストプラクティス

SQLクエリの記述

# データベースクエリの例
def get_user_data(user_id):
    query = """
    SELECT 
        u.id,
        u.name,
        u.email,
        p.phone_number
    FROM users u
    LEFT JOIN profiles p ON u.id = p.user_id
    WHERE u.id = %s
    AND u.active = TRUE
    """
    return query, (user_id,)

JSONテンプレートの作成

import json

def create_api_response(status, message, data=None):
    response_template = f"""
    {{
        "status": "{status}",
        "message": "{message}",
        "timestamp": "2024-01-01T12:00:00Z",
        "data": {json.dumps(data) if data else "null"}
    }}
    """
    return response_template

エラーメッセージの作成

def validation_error_message(field_name, value):
    error_msg = f"""
    バリデーションエラーが発生しました:
    
    フィールド名: {field_name}
    入力値: {value}
    
    有効な値を入力してください。
    詳細についてはドキュメントを参照してください。
    """
    return error_msg.strip()

よくある質問とトラブルシューティング

Q1: インデントが崩れてしまう場合の対処法

# インデントを含む複数行文字列
def create_code_snippet():
    code = """
def hello_world():
    print("Hello, World!")
    return True
    """
    
    # textwrapモジュールを使用してインデントを調整
    import textwrap
    return textwrap.dedent(code).strip()

Q2: 先頭や末尾の空白行を削除したい場合

# strip()メソッドを使用
message = """

これは複数行の文字列です。
先頭と末尾の空白行が削除されます。

""".strip()

print(repr(message))  # 実際の内容を確認

Q3: 特殊文字を含む場合の注意点

# rawストリング(r""")を使用
file_path = r"""
C:\Users\username\Documents\
python_projects\my_app\
main.py
"""

print(file_path.strip())

まとめ

Pythonで長い文字列や複数行文字列を扱う際は、用途に応じて適切な方法を選択することが重要です。

  • トリプルクォート(”””): 最も一般的で推奨される方法
  • 文字列連結: 改行を含まない長い文字列に適している
  • f文字列: 動的な内容を含む複数行文字列に最適
  • rawストリング: エスケープ文字を多く含む場合に便利

これらの方法を適切に使い分けることで、読みやすく保守性の高いPythonコードを書くことができます。特にWebアプリケーション開発やデータ処理において、複数行文字列の活用は必須のスキルとなるでしょう。

「らくらくPython塾」が切り開く「呪文コーディング」とは?

■プロンプトだけでオリジナルアプリを開発・公開してみた!!

■AI時代の第一歩!「AI駆動開発コース」はじめました!

テックジム東京本校で先行開始。

■テックジム東京本校

「武田塾」のプログラミング版といえば「テックジム」。
講義動画なし、教科書なし。「進捗管理とコーチング」で効率学習。
より早く、より安く、しかも対面型のプログラミングスクールです。

<短期講習>5日で5万円の「Pythonミニキャンプ」開催中。

<月1開催>放送作家による映像ディレクター養成講座

<オンライン無料>ゼロから始めるPython爆速講座