概要
こんにちは、すのくろです。
今回は、「.format()」を用いた文字列の簡単な作成方法を解説します。
記事内容
- .format()のメリット
- .format()の基本の使い方
- .format()の複数変数の使い方
- 実践での.format()の使い方(ファイル保存など)
- まとめ
この記事を読むことで、.format()を常に使用することができるようにあんると思います。
今までで文字列作成が煩わしかった人もここで覚えていただけると、今後のコードの書き方が分かりやすく、簡単になるかと思います!
それではやっていきましょう!
.format()の基本の使い方
超基本の作り方
はじめに、.format()の基本となる使い方を解説します。
まずは早速コードを示します。
name = 'hanako'
print("my name is {}".format(name))
### my name is hanako
文字列 ” “の中に、普通の文字と「{ }」があります。
この「{ }」の中に、入れたい変数を.format()の()内に入れて、その文字列の後ろにくっつけてあげれば完成です。
今回は、変数「name」が文字列内の{ }の中に入っています。
数値と文字の組み合わせ
続いて、文字だけでなく数値も扱ってみましょう。
まずは.format()で文字列を作成する前に、普通に文字連結で作成する場合のコードを示します。
# 普通にやると、数値→文字の型変換(str())が必要
age = 20
my_age = "I am "+ str(age) + " years old"
print(my_age)
### I am 20 years old
上記コードだと、文字と数値「age (20)」を連結させるためには、数値「age (20)」をstr()で文字の型に変換しないと連結できません。
これは、pythonなどの多くのプログラミング言語の基本ルールで、足したり引いたりと組み合わせる場合はその変数同士が同じ型でないといけないからです。
なので、普通に文字列を作成する場合は、数値→文字の型変換(str())が必要であり、少し面倒です。
しかし、.format()を使うと、型の考慮が減ります。
実際に下記コードで、.format()での場合を見てみましょう。
# .formatの場合、型変換が不必要
age = 20
my_age = "I am {} years old".format(age)
print(my_age)
### I am 20 years old
このように、特に数値「age」を型変換せずに、そのまま{ }の中に入れてあげることができます。
このシンプルさが、.format()で文字列を作成するメリットになります。
皆さんも.format()の使いやすさを実感できたのではないでしょうか。
for文と.format()で文字列を複数作成
次に、for文と組み合わせて、文字列を一度に沢山作成する方法について解説していきます。
コードは下記になります。
# forで使うとき
friends = ["Taro", "Jiro", "Saburo", "Shiro"]
for num in friends:
print("{} is my friend".format(num))
### 出力結果
Taro is my friend
Jiro is my friend
Saburo is my friend
Shiro is my friend
このように、for文で、リスト「friends」の文字を変数「num」で回して、文字列内の{ } が変わるものになっています。
for文でも、{ }のおかげでどこに文字が入るかが分かり易いですね。
また、for文について詳しく知りたいという方はこちらの記事もどうぞ。
.format()による複数の変数の扱い方
複数変数の.format()の方法
.format()の基本の使い方がわかってきたところで、次にちょっとした応用として複数変数での使い方についてみていきましょう。
.format()は、変数({ }の数)が複数あっても使えます。
例えば、以下のコードです。
# 2変数の場合
friends = ["Taro", "Jiro", "Saburo", "Shiro"]
my_name = "Hanako"
for f_name in friends:
print("{} is my friend of {}".format(f_name, my_name))
### 出力結果
Taro is my friend of Hanako
Jiro is my friend of Hanako
Saburo is my friend of Hanako
Shiro is my friend of Hanako
この例では、文字列内に{ }が二つあり、それぞれに、
.format(f_name, my_name)
で対応した変数が入っていることがわかります。
このように、.format(変数1、変数2、変数3、・・・)
とすることで、いくつも文字列内の{ }に変数を入れることができます。
指定した複数変数の.format()の方法
続いて、複数指定した変数がある場合に場所を指定できる方法についてみていきます。
# 2変数の場合(場所指定可能)
friends = ["Taro", "Jiro", "Saburo", "Shiro"]
my_name = "Hanako"
# f, mの順で変数が入る
for f_name in friends:
print("{f} is my friend of {m}".format(f=f_name, m=my_name))
print("-----位置入れ替え可能-------")
# m, fの順で変数が入る
for f_name in friends:
print("{m} is my friend of {f}".format(f=f_name, m=my_name))
### 出力結果
Taro is my friend of Hanako
Jiro is my friend of Hanako
Saburo is my friend of Hanako
Shiro is my friend of Hanako
-----位置入れ替え可能-------
Hanako is my friend of Taro
Hanako is my friend of Jiro
Hanako is my friend of Saburo
Hanako is my friend of Shiro
このように、今までの使い方とは少し変わって、下記のように、
"{f} is my friend of {m}".format(f=f_name, m=my_name)
{ }内にf, mなどの文字が入っています。
そのf, mに指定した変数がそれぞれ入っていることがわかると思います。。
なので、fとmの位置を入れ替えた場合、挿入される文字列も入れ替わるわけです。
{ }や扱う変数が多くなると、どこの{ }に何が入るかわからなくなる場合があるため、その時は今回のように、{ }内にわかりやすい文字を指定してあげると、コードの視認性が上がると思います。
なので、この方法は覚えていると便利だと思います。
.format()の実践的な使い方
最後に、.format()を実践で使った例を簡単に紹介して締めたいと思います。
今回は、pandasを使って作成されたデータフレームの各列のデータをcsvで保存する際に、ファイル名を.format()で指定しながら複数作成するといったものです。
まず、適当にデータフレームを作成しておきます。実際には扱うデータフレームを各自で用意してもらえればと思います。
コードは下記になります。
### 適当にデータフレームの作成
import numpy as np
import pandas as pd
data = np.random.rand(5,3)
cols = ["A", "B", "C"]
df = pd.DataFrame(data, columns=cols)
df
次に、このdfから各列(A, B, C)の値をそれぞれcsvファイルに保存したいとします。
その時のファイル名を「data_A.csv」, 「data_B.csv」,「data_C.csv」のようにしたいとします。
こんな時に、A, B, Cを変数部分とした文字列になるため、.format()とfor文の出番です。
コードは以下になります。
cols = df.columns
for nn in cols :
data = df[nn]
data.to_csv("data_{}.csv".format(nn))
このように、csvファイルがそれぞれ、コードを動かしているプログラムと同じフォルダ内に作成されていると思います。
これで、変数を扱った規則的なファイルの出来上がりです。
こうやって保存しておくと、次にデータを読み込む際にも規則的に読むだけなので簡単になります。
以上、簡単な.format()を使った実践例でした。
.format()のメリットまとめ
文字列作成がしやすい
.format()を使うことで、数値や文字の型変換について考慮する必要がなくなります。
さらに、普通の文字列を組み合わせる場合には、「+」でいちいち連結させる必要がありますが、.format()を使えばその必要はありません。
視覚的に見やすい
.format()を使う時には、その文字を入れる部分を「{ }」で示します。
そのため、どこに変数部分が来るのかが、一目でわかります。
さらに複数の変数を扱う際も「{a}, {b}」のように表示することができるため、どこにどの変数が入るのかが分かりやすいです。
このように今回は様々なコード例を交えて.format()の使い方を解説してきました。非常に便利な知識なので、これを機に覚えていただけると幸いです。
Pythonを中心としたプログラミングをより体系的に学びたいと言う方向けに、おすすめのオンラインスクールを2つ厳選して紹介していますので、こちらもよければご覧ください!
以上、ここまでお読みいただき、ありがとうございました!
コメント