Pythonのformatとf-stringの違いは?初心者向けに書き方と使い分け方を解説

この記事のポイント

この記事では、Pythonで文字列と変数を組み合わせる文字列整形について、わかりやすく説明します。

文字列整形を使うと、計算結果に単位を付けたり、数字の桁を揃えたりといったことができます。誰が見ても読みやすい表示を作るには、無視できない技術です。

この記事を読むと、次のようなことがわかります。

  • format()メソッドとf-stringそれぞれの特徴や違い
  • 2つの方法の基本的な書き方
  • 小数点や桁数を指定する方法
  • 推奨されている書き方と、その理由
  • Pythonのバージョンに応じた適切な方法の選び方

文字列整形は、プログラムの出力をわかりやすく表示するために欠かせません。

ぜひ、この記事を通じて、より読みやすいコードを書くスキルを身に付けましょう。

目次

文字列整形の基本

プログラムを書いていると、文字と数値を組み合わせて表示したい場面に必ず出会います。

ただ数値だけを出力するのでは味気ない表示になりますし、何より読み手にとってわかりにくくなってしまいます。

かといって、文字列の連結だけで対応しようとすると、コードが長く複雑になってしまうという問題もあります。

そこで活躍するのが、文字列整形という技術です。文字列整形を使いこなせるようになると、読みやすく保守しやすいコードが書けるようになります。

ここでは、その文字列整形の役割や使い方など基本的な部分を押さえていきましょう。

【関連】
Pythonをもっと詳しく学ぶならpaizaラーニング

文字列整形の役割

プログラムで計算した結果や変数の値を、ユーザーにわかりやすく伝えるには工夫が必要です。

単純に文字か数値のみを並べるだけでは読みにくく、何を表しているのかわかりにくい出力になってしまうでしょう。

「ネコが3匹います」や「価格は150円です」のように、文字と数値を自然な形で組み合わせて表示できるとしたらどうでしょうか?

そこで、文字列整形という技術を使うと、読みやすい形に整えて表示することができます。

animal_count = 3 print("ネコが" + str(animal_count) + "匹います")

出力結果

ネコが3匹います

この例では、+演算子を使って文字列を連結しています。ただし、数値をstr()関数で文字列に変換する必要があり、少し手間がかかります。

よく使われる方法の種類

文字列整形の方法は1つだけではありません。

最も基本的なのは、先ほどの例のように+演算子を使って文字列を連結する方法ですが、数値を文字列に変換する必要があるため、コードが長くなりがちです。

より実用的な方法として、format()メソッドとf-stringという2つの方法が広く使われています。

どちらも変数の値を文字列の中に自然に埋め込むことができるので、コードがすっきりと書けるようになります。

本記事では、この2つの方法に焦点を当ててくわしく解説していきます。

なお、以下の記事ではそれ以外の方法も含めて変数埋め込みについて広く解説をしています。あわせてご覧ください。

【関連】Pythonの変数埋め込みとは?使い方や注意点を初心者向けに解説

animal_count = 5 print("イヌが{}匹います".format(animal_count)) print(f"イヌが{animal_count}匹います")

出力結果

イヌが5匹います
イヌが5匹います

どちらの方法も同じ結果が得られますが、書き方に違いがありますね。

次のセクションからは、それぞれの方法についてくわしく見ていきましょう。

formatメソッドの特徴

format()メソッドを使うと、文字列の中に変数の値を簡単に埋め込むことができます。

基本的な使い方から応用的な機能まで、順番に見ていきましょう。

基本的な書き方

format()メソッドの基本的な使い方は、文字列の中に{}(波括弧)を書いて、その後ろに.format()を付けることです。
.format()の丸括弧()の中に入れた値が、文字列内の{}の部分に順番に入っていきます。

つまり、まず「ここに値を入れたい」という場所に{}を書いた文字列を用意しておいて、後から.format()で具体的な値を指定するという流れになります。

変数の型が数値でも文字列でも、自動的に適切な形に変換されて表示されるので便利です。

animal_name = "ウサギ" count = 2 print("{}が{}匹います".format(animal_name, count))

出力結果

ウサギが2匹います

このプログラムでは、文字列の中に{}が2つあります。

.format(animal_name, count)で2つの値を渡すと、最初の{}にanimal_nameの値(ウサギ)が、2つ目の{}にcountの値(2)が順番に入るというわけです。

書き方の柔軟性

format()メソッドには、より柔軟な使い方があります。

{}の中に数字を書くことで、値を入れる順番を自由に指定できるのです。また、名前を付けて指定することもできます。同じ値を複数の場所で使いたいような場合、特に有用です。

特に長い文章で複数の変数を扱うときに、この機能は役立つでしょう。

name = "ゾウ" weight = 3000 print("{0}の体重は{1}kgで、{0}はとても大きな動物です".format(name, weight)) print("{animal}の体重は{kg}kgです".format(animal="キリン", kg=800))

出力結果

ゾウの体重は3000kgで、ゾウはとても大きな動物です
キリンの体重は800kgです

最初の例では、{0}と{1}という数字を使って、どの値をどこに入れるか指定しています。

{0}は最初の値(name)、{1}は2番目の値(weight)を表しています。0が最初の数字である点に注意です。同じ{0}を2回使うことで、「ゾウ」という名前を2か所に表示できていることも確認できますね。

2つ目の例では、animalやkgという名前を付けて値を指定しています。このように名前を付けると、何を表しているのかがわかりやすくなります。

コードの可読性を高める方法としても、有用だということを覚えておきましょう。

桁数・小数点の指定

数値を表示するとき、桁数を揃えたり、小数点以下の表示桁数を調整したりしたい場合があります。

そんな場面でも、format()メソッドを使えば、{}の中にコロンを書いて、その後ろに書式を指定することで実現できるのです。

例えば、次のような形で書きます。

小数点以下を2桁で表示したい場合:「:.2f」
整数部分を0埋めして4桁で表示したい場合:「:04d」

この機能を使うと、きれいに整列した表示ができるようになります。

price = 150.5 count = 7 print("商品価格は{:.2f}円です".format(price)) print("商品番号は{:04d}番です".format(count))

出力結果

商品価格は150.50円です
商品番号は0007番です

:.2fは、小数点以下を2桁で表示するという意味です。末尾の「f」は「浮動小数点数(float)」を表します。
:04dは、4桁の整数として表示し、足りない桁は0で埋めるという意味です。末尾の「d」は「整数(decimal)」を表します。

ちなみに、0埋めと小数点指定を同時に使いたい場合は、「:08.2f」のように組み合わせることができます。
「:08.2f」は「全体で8文字、小数点以下2桁」という意味で、小数点も含めて8文字分のスペースを確保し、足りない部分を0で埋めます。

このように、表示形式を細かく指定できるのがformat()メソッドの便利なところです。

f-stringの特徴

f-stringは、Python 3.6から使えるようになった新しい文字列整形の方法です。

文字列の前にfを付けることで、{}の中に直接変数名や式を書くことができます。かなり直感的で読みやすいのが特徴です。

基本的な書き方

f-stringの使い方は、かなりシンプルです。

文字列の前にfという文字を1つ付けて、{}の中に変数名をそのまま書くだけです。format()メソッドのように、後から.format()を付けて値を指定する必要はありません。

「この変数の値をここに表示したい」と思ったら、その場所に{変数名}と書けばいいのです。

どの部分にどの変数が入るのかがひと目でわかるため、初心者にとってもかなり理解しやすい形のはずです。

animal = "パンダ" food = "竹" print(f"{animal}は{food}を食べます")

出力結果

パンダは竹を食べます

文字列の前にfを付けて、{animal}と{food}という風に変数名を書くだけです。

animal変数に入っている「パンダ」と、food変数に入っている「竹」が、そのまま表示されています。

変数の埋め込み

f-stringの役割は、単に変数を表示するだけではありません。

{}の中で計算もできます。

例えば、2つの数を足した結果を表示したい場合、わざわざ別の変数に計算結果を入れる必要はありません。{}の中に直接計算式を書けば、その結果が表示されるからです。

cat_count = 4 dog_count = 3 total = cat_count + dog_count print(f"ネコが{cat_count}匹、イヌが{dog_count}匹、合計{total}匹います") print(f"全体では{cat_count + dog_count}匹の動物がいます")

出力結果

ネコが4匹、イヌが3匹、合計7匹います
全体では7匹の動物がいます

1つ目のprintでは、それぞれの変数をそのまま表示しています。

2つ目のprintに注目してください。
{cat_count + dog_count}という風に、{}の中で足し算をしています。わざわざtotalという変数を使わなくても、計算結果がその場で表示されるのです。

このように、f-stringを使えば、変数を表示するのも計算結果を表示するのも、とてもシンプルに実現できます。

小数点・桁数の指定

f-stringでも、format()メソッドと同じように数値の表示形式を調整できます。

やり方は、format()メソッドとほとんど同じです。変数名の後ろにコロン:を付けて、その後ろに表示形式を書きます。

height = 165.8 weight = 55.25 print(f"身長は{height:.1f}cm、体重は{weight:.1f}kgです") print(f"ID番号は{12:05d}です")

出力結果

身長は165.8cm、体重は55.2kgです
ID番号は00012です

{height:.1f}の:1.fという部分が、「小数点以下1桁で表示する」という指示です。165.8はそのまま表示されますが、55.25は、55.2という形で表示されます。

{12:05d}の:05dは、「5桁の数字として表示し、足りない部分は0で埋める」という意味です。12という数字が00012と表示されるわけです。

ちなみに、「小数点の指定は切り捨てなのか」と思った方もいるかもしれませんね。試しに、55.25を55.35に変えて実行してみてください。55.4と表示されると思います。
なぜ切り上げられたのでしょうか?

実は、コンピュータにとって0.05という数字は、ピッタリ0.05ではないのです。これは、コンピュータの内部で扱っている数字が2進数であることに起因しています。
このごくわずかな誤差によって、切り上げか切り捨てかが決まってしまうというわけです。

このような微妙な誤差を避け、常に正確に指定したい場合は、標準ライブラリのdecimalモジュールを使うのが一般的です。

初心者の方には少し応用的な内容になりますので、この表示の不安定さは回避できるということだけでも覚えておいてください。

最初は、この表示の差に戸惑いがちなので、頭の片隅に置いておきましょう。

formatとf-stringの違い比較

ここまで2つの方法を学んできましたが、「結局どちらを使えばいいの?」と迷っている方もいるはずです。

どちらも同じ結果を得られますが、書き方や使いやすさに違いがあります。それぞれの特徴を具体的に比較して、どちらを選ぶべきかを考えてみましょう。

書き方の違い

同じ内容を表示する場合でも、2つの方法では書き方が大きく異なっていましたね。ここで改めてその違いについて確認しておきましょう。

format()メソッドは、まず{}で穴を開けた文字列を作ってから、後で.format()を使って値を指定します。
一方、f-stringは最初から変数を文字列の中に直接書き込みます。

実際のコードで比べてみましょう。

name = "トラ" age = 5 message1 = "{}は{}歳です".format(name, age) message2 = f"{name}は{age}歳です" print(message1) print(message2)

出力結果

トラは5歳です
トラは5歳です

format()メソッドでは、文字列の部分と変数の部分が離れています。文字列に{}が2つあり、後ろの.format(name, age)で値を指定しています。

f-stringでは、{name}や{age}という形で、変数が表示される位置に直接書かれています。変数と表示位置の関係が、ひと目でわかりますね。

特に変数が多くなるほど、この違いは大きくなります。

読みやすさと理解しやすさ

プログラミングを始めたばかりの人にとって、f-stringの方が理解しやすい傾向があります。変数がどこに表示されるかがひと目でわかり、コードの意図を把握しやすいからです。

format()メソッドの場合、文字列部分と変数部分が離れているため、対応関係を確認するのに少し時間がかかります。

一方、f-stringなら変数が表示される位置に直接書かれているので、直感的に理解できます。

bird = "ツル" wing_span = 180 print("{}の翼の長さは{}cmです".format(bird, wing_span)) print(f"{bird}の翼の長さは{wing_span}cmです")

出力結果

ツルの翼の長さは180cmです
ツルの翼の長さは180cmです

速度と推奨

技術的な面でも、f-stringには利点があります。

一般的に、f-stringの方がformat()メソッドよりも処理速度が速いとされているからです。
実際、Python公式ドキュメントでも、新しいコードを書く場合はf-stringの使用が推奨されています。

ただし、日常的なプログラムを書く範囲では、速度の違いを実感することはほとんどありません。それよりも、コードの書きやすさや読みやすさの方が、大きなメリットに感じるでしょう。

項目

formatメソッド

f-string

処理速度

やや遅い

速い

公式推奨度

標準的

推奨

書きやすさ

普通

書きやすい

こういった理由から、f-stringを使うことをおすすめします。

Pythonバージョンと使い分け

f-stringの使用をおすすめしますが、実はPythonのバージョンによっては使用できない場合があります。

自分が使っているPythonのバージョンを確認して、適切な方法を選びましょう。

対応バージョンの違い

format()メソッドは、Python 2.7以降で使えます。つまり、かなり古いバージョンのPythonでも問題なく動作するということです。

一方、f-stringはPython 3.6以降でのみ使える、比較的新しい機能です。

Python 3.6より古いバージョンを使っている場合は、f-stringを使おうとするとエラーが発生してしまいます。
ただし、現在多くの環境でPython 3.6以降が使われているため、f-stringが使えない場面が減ってきているのも事実です。

自分が使っているPythonのバージョンは、次のコードで確認できます。

import sys print(sys.version)

出力結果(例)

3.11.13 (main, Dec 10 2025, 06:59:26) [GCC 13.3.0]

この例では、Python 3.11.13のため、f-stringが問題なく使えます。

もし「3.6」より小さい数字(例えば「3.5」や「3.4」)が表示された場合は、f-stringは使えません。

初心者へのおすすめ

先述してきた通り、これからPythonを学び始める人には、f-stringの習得をおすすめします。

現在の主流となっているPython 3.6以降を使うのであれば、f-stringの方が書きやすく理解もしやすいからです。プログラミングを学ぶ上で、シンプルでわかりやすい方法から始めるのは大切なことです。

ただし、format()メソッドを完全に無視していいわけではありません。

インターネット上のコード例や、既存のプログラムを読む際に、format()メソッドが使われていることがあります。そのため、基本的な読み方は知っておいた方が良いでしょう。

animal = "ライオン" print(f"{animal}は百獣の王です")

出力結果

ライオンは百獣の王です

よくある質問(Q&A)

Q:. f-stringで計算式は使えますか? 

A: はい、{}の中に直接計算式を書くことができます。変数同士の計算や関数の呼び出しも可能で、その結果が自動的に文字列に埋め込まれます。

print(f"合計金額は{100 + 250}円です")

出力結果

合計金額は350円です

Q: 古いPythonでf-stringを使うとどうなる?

A: Python 3.6未満でf-stringを使うとSyntaxErrorが発生してプログラムが動きません。使用前に必ずPythonのバージョンを確認しましょう。

Q: {}の中に文字列を直接書けますか?

A: 可能ですが、引用符の種類に注意が必要です。外側がダブルクォートなら内側はシングルクォート、またはその逆で書く必要があります。

name = "サル" print(f"{name}の鳴き声は'キーキー'です")

出力結果

サルの鳴き声は'キーキー'です

Q: formatとf-stringは混在して使えますか?

A: 同じプログラム内で両方を使うことは可能ですが、おすすめしません。コードの統一性を保つため、どちらか一方に統一することが推奨されます。

Q: 波括弧自体を文字として表示したい場合は? 

A: f-stringでは{{や}}のように波括弧を2つ重ねることで、波括弧そのものを表示できます。formatメソッドでも同様の方法が使えます。

print(f"辞書の書き方は{{キー: 値}}です")

出力結果

辞書の書き方は{キー: 値}です

まとめ

この記事では、Pythonで文字列と変数を組み合わせる2つの方法を学んできました。

format()メソッドとf-string、どちらも「文字列の中に変数の値を入れて表示する」という同じ役割を持っていますが、その書き方や使いやすさには違いがあります。

文字列整形を使いたいのは、次のような場面です。

文字列整形が活躍する場面

  • 計算結果をわかりやすく表示したいとき
  • プログラムの出力を読みやすく整えたいとき
  • 変数の値を含むメッセージを作りたいとき

重要なポイントは次の通りです。

重要なポイント

  • format()メソッドは古いPythonバージョンでも使える
  • f-stringの方が直感的で書きやすく、わかりやすい
  • 数値の表示形式は、どちらでも指定できる
  • f-stringはPython 3.6以降でのみ使える
  • 新しくコードを書く場合、f-stringが推奨
  • 既存のコードを読むためにも、format()メソッドの知識は必要

初めて文字列整形を学ぶ方も、この記事で紹介した基本的な使い方と実用例を参考に、実際にコードを書いてみてください。

文字列整形は、プログラミングで毎日のように使う基本的な技術です。format()メソッドやf-stringを使いこなすことで、より読みやすく、わかりやすいプログラムを書けるようになります。

これからPythonを学ぶ方は、まずf-stringをしっかり練習してみてください。ぜひ文字列整形をマスターし、確かなスキルを身に付けましょう。

レベルを更に上げたい方はpaizaプログラミングスキルチェックへ

  1. paizaラーニングトップ
  2. ナレッジ
  3. Pythonのナレッジ記事一覧
  4. Pythonのformatとf-stringの違いは?初心者向けに書き方と使い分け方を解説