Python 文字列の変数展開

Facebook にシェア
Pocket
LINEで送る
このエントリーを Google ブックマーク に追加

基本的な内容を整理。

[amazonjs asin=”4774173207″ locale=”JP” title=”Pythonエンジニア養成読本[いまどきの開発ノウハウ満載!] (Software Design plus)”]

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

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

[python title=”mojiretu.py”] # -*- coding: utf-8 -*-

if __name__ == "__main__":

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

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

[python title=”mojiretu2.py”] # -*- 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] [shell title=”mojiretu2.pyの出力結果”] # python mojiretu2.py
こんにちは,わたしはたかし、16歳です。
[/shell]

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

[python title=”mojiretu2.py”] # -*- coding: utf-8 -*-

if __name__ == "__main__":

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

# {0}を再利用している。
str = "こんにち{0},わたし{0}た{1}、{2}歳です。".format("は", "かし", 16)
print(str)
[/python] [shell title=”mojiretu2.pyの出力結果”] # python mojiretu2.py
こんにちは,わたしはたかし、16歳です。
[/shell]

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

[python title=”mojiretu3.py”] #! -*- 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] [shell title=”mojiretu3.pyの出力結果”] # python mojiretu3.py
こんにちは,わたしはたかし、16歳です。
[/shell]

Related posts

コメントを残す