Python 文字列の変数展開

Share on Facebook
Pocket
LINEで送る
Bookmark this on Google Bookmarks

基本的な内容を整理。

Pythonには文字列内に変数を展開する手法がいくつかある。
(Pythonの方針上、望ましくない気はするが。。。)

Python2.5系までは以下のように使われてきた。

# -*- coding: utf-8 -*-

if __name__ == "__main__":

        # 文字列を代入したいところには %sを、数字を代入したいところには %dを記述する。
        # 文字列の後ろに % を書いて代入したい順番にタプル(())で代入したい値を記述する。
        str = "こんにち%s, わたしはた%s、%d歳です。" % ("は", "かし", 16)
        print(str)
# python mojiretu.py
こんにちは, わたしはたかし、16歳です。

ただしこの方法ではC言語などではお馴染みの通り、文字列を埋め込む場合は%s、数字を埋め込むには%dなど、埋め込むタイプによって指定する必要がある。そのため、Python2.6以降では format関数を利用した方法が推奨されている。

# -*- coding: utf-8 -*-

if __name__ == "__main__":

        #str = "こんにち%s, わたしはた%s、%d歳です。" % ("は", "かし", 16)

        # format関数の引数に代入したい文字列を指定する。
        # 引数で指定した順番に番号が振られ(この場合は"は"、"かし"、16の順に0 1 2)、
        # 展開したい位置に{振られた番号}のようにして記述する。
        str = "こんにち{0},わたしはた{1}、{2}歳です。".format("は", "かし", 16)
        print(str)
# python mojiretu2.py
こんにちは,わたしはたかし、16歳です。

次のように、format関数で指定した引数は再利用できる。

# -*- coding: utf-8 -*-

if __name__ == "__main__":

        #str = "こんにち%s, わたしはた%s、%d歳です。" % ("は", "かし", 16)

        # {0}を再利用している。
        str = "こんにち{0},わたし{0}た{1}、{2}歳です。".format("は", "かし", 16)
        print(str)
# python mojiretu2.py
こんにちは,わたしはたかし、16歳です。

更に、dict型を使うことで{0}のような番号以外のものも指定できる。

#! -*- coding: utf-8 -*-

if __name__ == "__main__":

        #str = "こんにち%s, わたしはた%s、%d歳です。" % ("は", "かし", 16)
        #str = "こんにち{0},わたし{0}た{1}、{2}歳です。".format("は", "かし", 16)

        dictionary = dict(google="は", yahoo="かし", baidu=16)

        str = "こんにち{google},わたし{google}た{yahoo}、{baidu}歳です。".format(**dictionary)

        print(str)
# python mojiretu3.py
こんにちは,わたしはたかし、16歳です。

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です