差し込み処理と書式指定

差し込み処理と書式指定

format()メソッドによる差し込み処理

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

差し込み処理の基本

 str.format(x)

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

# FORMAT_01

# 名前の差し込み処理
subject = "{}は2年次の必須科目です".format("情報代数学")

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

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

# FORMAT_02

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" という文字列が作られます。

# FORMAT_03

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

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

 

キーワード引数を指定して差し込む

 キーワード引数を指定して差し込むこともできます。

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

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

# FORMAT_04

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

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

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

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

 

ディクショナリを利用して差し込む

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

# FORMAT_05

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

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

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

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

 

入門 Python 3

新品価格
¥3,996から
(2019/8/6 11:45時点)

差し込み文字の書式指定

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

3 桁ごとのカンマ区切り

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

# FORMAT_06

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

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

 

差し込み数字をパーセンテージ表示する

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

# FORMAT_07

# 数字をパーセンテージで表示
# "." のあとに小数点以下の桁数を指定
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%

 

差し込み文字の左寄せ・右寄せ・中央寄せ

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

# FORMAT_08

# 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文を使ったサンプルコードをいくつか載せておきます。

# FORMAT_09

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

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

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

 

# FORMAT_10

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

print(x)
4,526,000円

 

# FORMAT_11

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%]