Pythonの文字列操作の便利なメソッド「format」の使い方を初心者向けに分かりやすく解説します。
formatメソッドは非常に便利なメソッドであるため、実際のソースコードでも頻出のためこのページでしっかりマスターしておきましょう。
Pythonエンジニアであれば、知っておいて損はない絶対に役立つ知識ですので、是非最後までご覧ください。
Python:formatメソッドとは?
formatメソッドは、文字列の中に別の文字列(※もしくは変数・リストの値)を埋め込むためのメソッドです。
具体的な利用シーンをイメージするために、以下のような文字列があると仮定します。
2つの文字列は、青字部分だけが異なり、他の部分は全く同一です。
このようなときに、2つの文字列を1からコーディングするのではなく、例えば黒字部分を使いまわして、青字部分だけを動的に書き換えることができたら便利です。
このようなときに、使えるのがformatメソッドです。
formatメソッドを用いれば、文字列の中に別の文字列を埋め込んだり、文字列の中に変数の値やリストの値を埋め込むことが可能です。
このようなシーンは実際のコーディング時に割と頻繁に目にする機会が多くあり、大変ポピュラーなメソッドですので、しっかりと使い方を覚えましょう。
Python:formatメソッドの使い方
基本的な構文は次の通り。
"私の名前は{}です。".format("山田太郎")
構文ルールはたったこれだけ。(埋め込む文字列を2か所指定する場合については、次の章で解説します。)
formatメソッド:サンプルコード
formatメソッドの使い方をより具体的にイメージしていきましょう。
まずは、最も基本的な形から。
a = "私の名前は{}です。" print(a.format("山田太郎")) # 私の名前は山田太郎です。
a = "私の名前は{}です。".format("山田太郎") print(a) # 私の名前は山田太郎です。
引数には文字列ではなく、変数を指定することもできます。
a = "私の名前は{}です。" b = "山田太郎" print(a.format(b)) # 私の名前は山田太郎です。
a = "I like {} the best!" b = "baseball" c = "soccer" print(a.format(b)) print(a.format(c)) # I like baseball the best! # I like soccer the best!
formatメソッド:複数の文字列を埋め込む方法
先ほど解説した書き方では、変数を埋め込める場所が1つしか指定できません。
ただ、実際には複数の値を埋め込みたい場合も多く存在します。
この章では、複数の文字列を埋め込む方法を解説します。
複数の変数を埋め込む方法
書き方は以下の通り。
"~~{0}{1}{2}~~".format(引数1,引数2,引数3)
波括弧{}の中に0から順に数字を入力するだけ。
その順番で引数に指定した変数の値が順に埋め込まれていきます。
a = "私は{0}と{1}が好きです。" b = "理科" c = "社会" print(a.format(b,c)) # 私は理科と社会が好きです。
数字は0から順番に並べる必要はなく、自由に並べてOK。
a = "私は{1}と{0}が好きです。" b = "理科" c = "社会" print(a.format(b,c)) # 私は社会と理科が好きです。
この数字は、あくまでも引数の順番を指定しているだけだということを理解しましょう。
ちなみに、数字を入れない場合でも動きます。
a = "私は{}と{}が好きです。" b = "理科" c = "社会" print(a.format(b,c)) # 私は理科と社会が好きです。
引数は順に埋め込まれていくようになります。
尚、あまり好ましくはない例ですが、埋め込むことができる数以上の引数を指定してもエラーにはなりません。
a = "私は{0}と{1}が好きです。" b = "理科" c = "社会" d = "数学" print(a.format(b,c,d)) # 私は理科と社会が好きです。
このように問題なく動きます。
ただし、その逆―。formatメソッドの引数が足りないとエラー(IndexError: tuple index out of range)になってしまうため注意が必要です。
a = "私は{0}と{1}と{2}が好きです。" b = "理科" c = "社会" print(a.format(b,c)) # IndexError: tuple index out of range
リストの値を埋め込む方法
formatメソッドを利用すれば、変数だけでなくリストの値を埋め込むことも可能です。
リストはPythonにおけるデータ構造の一種。配列とも呼ばれます。
複数の値を代入することが可能な変数のようなものと理解してしまって一旦はOKです。
配列に格納した1つ1つの値のことを「要素」、それぞれの要素の位置のことを「要素番号 / インデックス(index
)」呼びます。
インデックスは、左から順番に0から始まる連番で管理します。
subject = ["国語","英語","数学","理科","社会"] a = "私は{0[0]}と{0[3]}が好きです。" print(a.format(subject)) # 私は国語と理科が好きです。
リストの中の要素の値が埋め込まれています。
リスとを埋め込む方法は次の通り。
"~~{0[0]}{0[1]}{1[2]}~~".format(リスト1,リスト2)
緑の番号は先ほど同様、引数の順番を表しています。
オレンジは、要素番号を表します。
この2つの数字を指定することで、どのリストの何番目の要素を取得するか?を明示することが可能になります。
subject = ["国語","英語","数学","理科","社会"] name = ["私","彼","彼女"] a = "{1[1]}は{0[0]}と{0[3]}が好きです。" print(a.format(subject,name)) # 彼は国語と理科が好きです。
数字を変えるだけでいろいろな文字列を表現できます。
subject = ["国語","英語","数学","理科","社会"] name = ["私","彼","彼女"] a = "{1[2]}は{0[1]}と{0[0]}が好きです。" print(a.format(subject,name)) # 彼女は英語と国語が好きです。
リストについては、パッと見で理解しきれないですが、サンプルコードをよく見ていただければ仕組みは必ず理解できます。
formatメソッドの基本はたったこれだけです。
是非、いろんなシーンで利用してみてください。
Pythonを1から学びたい方は
Pythonを実践的に学びたい―。実際にコーディングしながら学びたい―。独学に限界を感じている―。
そんな方は、無料体験/オンライン完結もあるプログラミングスクールで学んでみるのはいかがでしょうか?
都度検索しながら知識を補完していくのではなく、1から体系立てて学ぶことで短時間・かつ効率的にスキルハックすることが可能です。
各プログラミングスクールの特徴をまとめた記事をこちらに記載しておきますので、是非ご覧ください。