Categories: Python

【Python】文字列に値を埋め込む方法【フォーマット】

この記事では、文字列に値を埋め込む方法を解説します。Pythonには、3種類のフォーマット方法が用意されているのでそれぞれ使い方を見ていきましょう。

また、さまざまな書式が用意されており、設定することで値を埋め込む際に特殊な効果を付属させることもできます(0埋めなど)。

それでは、文字列に値を埋め込む方法を見ていきましょう!

フォーマット済み文字列リテラル

フォーマット済み文字列リテラルを使うことで簡単に文字列にデータを埋め込むことができます。この方法が一番オススメ。f-stringなどと呼ばれたりもします。
※ Python3.6から追加

書式

文字列リテラルのプレフィックスとしてf、またはFを付け、文字列中の値を埋め込みたい箇所に{}を記述し、その中に変数や値を書き込みます。

f'{埋め込む値や変数}'

サンプル

以下のコードでは、文字列リテラルを使って直接値を埋め込んでいますが、その際のクォーテーションには注意してください。

# 変数も埋め込める
age = 15

text = f'名前: {"山田太郎"}, 年齢: {age}, 性別: {"男"}'
print(text)

実行結果

名前: 山田太郎, 年齢: 15, 性別: 男

参考フォーマット済み文字列リテラル — Python ドキュメント

str.formatメソッド

str.formatメソッドを使うことで文字列にデータを埋め込むことができます。

書式

文字列中の値を埋め込む箇所に{数字}を記述します。そして、formatメソッドを呼び出し、引数に挿入したい値を順番に記述します。

'{0} {1}'.format({0}に埋め込む値, {1}に埋め込む値)

数字は省略することも、

'{} {} {}'.format(値1, 値2, 値3)

キーワードで指定することもできます。

'{name} {age} {gender}'.format(name='名前', age='年齢', gender='性別')

サンプル

文字列中に数字とキーワードのどちらも指定されている場合は、formatメソッド内で数字の値から指定し、その後でキーワードの値を指定しましょう。

text = '名前: {0}, 年齢: {age}, 性別: {1}'.format('田中花子', '女', age=15)
print(text)

実行結果

名前: 田中花子, 年齢: 15, 性別: 女

%記法

C言語などでも使われている%記法を使ってデータを埋め込むことができます。

書式

値を埋め込みたい箇所に「フォーマット指定子」を記述し、%で埋め込む値を文字列リテラルの後に繋ぎます。

'%s %d' % (値1, 値2)

%s%dはフォーマット指定子(変換指定子)と呼ばれ、記述した箇所に特定の型の値を埋め込むことができます。

フォーマット指定子には、以下のようなものがあります。

%d 符号付10進整数
%f 10進浮動小数点数
%c 文字一文字
%s 文字列(str()で変換)

サンプル

試しに文字列中にデータを埋め込んでみます。

text = '名前: %s, 年齢: %d, 性別: %s' % ('山田太郎', 15, '男')
print(text)

実行結果

名前: 山田太郎, 年齢: 15, 性別: 男

参考printf 形式の文字列書式化 — Python ドキュメント

まとめ

この記事では、Pythonで文字列に値を埋め込む方法を解説しました。

基本的には「フォーマット済み文字列リテラル」が簡単に扱えるのでおすすめですが、比較的に最近追加されたのでバージョンには気をつけましょう!

書式の設定については以下の記事を参考にしてください。

フォーマット時の書式の設定

それでは今回の内容はここまでです。ではまたどこかで〜( ・∀・)ノ

ゆうまる

独学でプログラミングを勉強しているおじさん。いろんな言語を勉強したが浅く広くなためあまり仕事につながらない。また忘れっぽいため自分のブログを備忘録としても使っている。産まれてこのかたずっとネコを飼ってる生粋のネコ派。最近お腹が出てきて筋トレに奮闘中!

View Comments

Recent Posts

【Dart】コンストラクタのデフォルト引数について

Dartのコンストラクタのデフォルト引数…

4週間 ago

【Unity】有料アセットを無料で手に入れる方法

この記事では、Unityの有料アセットを…

5か月 ago

【Python】任意の秒数だけ処理を一時停止する方法【sleep()関数】

この記事では、Pythonで任意の秒数だ…

1年 ago

【Python】Wordの文書の新規作成と読み書き

この記事では、Pythonを使ってWor…

1年 ago

【Python】メタクラスって結局なんなの?

この記事では、Pythonのメタクラスに…

1年 ago