Python | 三連引用符(トリプルクオーテーション)

Python
スポンサーリンク

三連引用符のかんたんな説明

三連引用符は ”’…”’ または “””…””” を使って、改行を含む長い文字列をそのまま書ける記法です。改行やクオートをエスケープしなくて済むので、メッセージやドキュメント文字列(docstring)を書くときに便利です。


例を見てみる

msg = """こんにちは。
これは複数行の文字列です。
改行や"ダブルクオート"もそのまま使えます。"""
print(msg)
Python

出力は書いた通りに改行され、ダブルクオートもそのまま表示されます。


練習問題と解答

問題1

次のコードの出力は何になりますか?

text = """A
B
C"""
print(text)
Python

解答 A
B
C

解説 三連引用符内の改行がそのまま文字列に入ります。printで改行を含めて表示されます。


問題2

次のコードのprintが出力する文字列の先頭に余分な空行を入れないように、正しい書き方に直してください。

text = """
Hello
World
"""
print(text)
Python

解答

text = """Hello
World"""
print(text)
Python

解説 最初の例は三連引用符の開始直後に改行があるため、文字列先頭に空行が入ります。三連引用符を開始した直後から文字を書けば余分な先頭改行がなくなります。


問題3

関数の説明をdocstringで書いてください。内容は「この関数は二つの数の和を返す」です。関数名は add とします。

解答

def add(a, b):
    """この関数は二つの数の和を返す"""
    return a + b
Python

解説 関数の最初に三連引用符で書いた文字列がdocstringです。help(add) や IDE がこの説明を参照できます。短い説明なら一行の三連引用符でも問題ありません。


問題4

次の三連引用符を使った文字列から、行先頭の余分なインデント(4つのスペース)を取り除いて表示するコードを書いてください。

text = """
    line1
    line2
    line3
"""
# ここに処理を書いて print してください
Python

解答

import textwrap

text = """
    line1
    line2
    line3
"""
print(textwrap.dedent(text).strip())
Python

解説 コード中でインデントして三連引用符を書くと、各行の先頭にスペースが入ります。textwrap.dedent を使うと共通インデントを取り除けます。最後に strip() を使うと先頭・末尾の余分な改行を削除できます。


問題5(少し応用)

三連引用符を使って、HTMLの簡単なテンプレート(改行やインデントを保存)を変数に代入し、printで出力してください。内容は次のとおり: <html> <body> <p>こんにちは</p> </body> </html>

解答

html = """<html>
  <body>
    <p>こんにちは</p>
  </body>
</html>"""
print(html)
Python

解説 HTMLのように改行やインデントをそのまま保持したいときに三連引用符は便利です。文字列中にダブルクオートやシングルクオートがあってもエスケープ不要です。


まとめ

  • 三連引用符は複数行文字列を書くのに便利。
  • 先頭改行やコードのインデントで余分な空白が入ることがあるので注意。
  • docstring、長文メッセージ、テンプレート(HTML/SQLなど)に積極的に使おう。
Python
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました