文字列の差し込み処理と書式指定

文字列の差し込み処理と書式指定

formatメソッドを用いた差し込み処理

 "{ } は2年次の必須科目です" というように、一部を空白にした定型文章を用意しておいて、{ } に任意の文字を入れることを 差し込み処理 といいます。Python では、このような差し込み処理を行なうために、文字列に formatメソッド が備えられています。

差し込み処理の基本

 str.format(x)

 str.format(x) のように記述すると、文字列に含まれる { } に x を差し込みます。

subject = "{}は2年次の必須科目です"

# 名前の差し込み処理
subject = subject.format("情報代数学")

print(subject)
情報代数学は2年次の必須科目です

 定型文の { } にリストの要素を順に差し込んでいく処理をする場合は、for文を使って次のようなコードを書きます。

subject = "{}は2年次の必須科目です。"

# 科目のリストを用意
subject_list = ["論理回路", "アルゴリズム論", "プログラミング技法"]

# 差し込み処理
for x in subject_list:
    y = subject.format(x)
    print(y)
論理回路は2年次の必須科目です。
アルゴリズム論は2年次の必須科目です。
プログラミング技法は2年次の必須科目です。

 

位置引数を指定します

 str.format(x, y, z, ...)

 文字列の中に {0} や {1} のように整数を指定すると、対応する位置引数が差し込まれます。たとえば、"{0}+{1}".format(x, y) と記述すると、{0} に x, {1} に y が差し込まれて、"x + y" という文字列が作られます。

#位置引数を指定して差し込みます
subject = "{0},{1},{2}".format("情報統計学", "計算量理論", "データ科学")

print(subject)
情報統計学, 計算量理論, データ科学

 

キーワード引数を指定します

 str.format(keyword1 = x, keyword2 = y, ......)

 キーワード引数を指定して差し込むこともできます。
 たとえば文字列に含まれる { } の中に keyword1 を記述して、formatメソッドの引数を keyword1 = x のような形で指定すると、{keyword1} に x が差し込まれます。以下のサンプルコードでは title と url をキーワード引数としています。

my_str = "{subject}の講義は{name}教授が担当します"

x = "情報解析学"
y = "花塚"

my_str = my_str.format(subject = x, name= y)

print(my_str)
情報解析学の講義は花塚教授が担当します

 

ディクショナリを利用します

 あらかじめディクショナリを用意しておけば、文字列の中の {0[key]} と記述したところに、key に対応する値 (value) が差し込まれます。

# 科目名と担当教授のディクショナリ
my_dic = {"subject":"ソフトウェア工学", "name":"螢原"}

# 差し込み位置にキーを指定
my_str = "{0[subject]}の講義は{0[name]}教授が担当します。"

# ディクショナリを使って差し込み処理を実行
my_str = my_str.format(my_dic)

print(my_str)
ソフトウェア工学の講義は螢原教授が担当します。

 

差し込み文字の書式指定

 コロン(:)を添えると差し込む文字列の書式を指定できます。

3 桁ごとのカンマ区切り

 {:,} に数字を差し込むと、3 桁ごとにカンマで区切ります。

# 3桁ごとにカンマで区切ります
x = "{:,}円".format(12000)
y = "{:,}円".format(7852000)

print(x, y)
12,000円 7,852,000円

 

パーセンテージ表示

 {:.x%} のように記述すると、差し込まれた数字を小数点以下 x 桁までのパーセンテージ表示に変換します。

# 数字をパーセンテージで表示します
# "." のあとに小数点以下の桁数を指定します 
x = "{:.2%}".format(1/3)
y = "{:.3%}".format(1/3)
z = "{:.4%}".format(1/3)

print(x, y, z)
33.33% 33.333% 33.3333%

 

左寄せ・右寄せ・中央寄せ

 コロン (:) のあとに、[埋める文字][埋める方向][全体の文字数] を指定して、差し込む文字を寄せることができます。[埋める文字] を省略すると空白が埋め込まれます。

# 11文字の長さをとって左寄せ、残りはaで埋める
str_left = "{:a<11}".format("情報論理学")

# 11文字の長さをとって右寄せ、残りはaで埋める
str_right = "{:a>11}".format("情報論理学")

# 11文字の長さをとって中央寄せ、残りは空白で埋める
str_center = "{:^11}".format("情報論理学")

print(str_left)
print(str_right)
print(str_center)
情報論理学aaaaaa
aaaaaa情報論理学
   情報論理学   

 

f文を使った埋め込み処理

 Python3 から f文 という埋め込み機能が追加されました。
 f のあとにクォーテーションまたはダブルクォーテーションで囲った文字列を記述し、その中に { } が含まれていれば、そこに文字列を埋め込むことができます。書式の指定方法は formatメソッドと同じです。以下に f文を使ったサンプルコードをいくつか載せておきます。

x = "3"
y = "情報社会論"

my_str = f"{x}年の秋学期には{y}を履修するつもりです。"

print(my_str)
'3年の秋学期には情報社会論を履修するつもりです。'

 

# 3桁ごとにカンマで区切ります
x = f"{4526000:,}円"

print(x)
4,526,000円

 

# 数字をパーセンテージで表示します
# "." のあとに小数点以下の桁数を指定します

num = 1/3

x = f"{num:.2%}"
y = f"{num:.3%}"
z = f"{num:.4%}"

print(x, y, z)
33.33% 33.333% 33.3333%