Pythonで数値を文字列に変換する方法!str()とformat()の使い方
生徒
「Pythonで数字を文字に変えたいんですけど、どうすればいいですか?」
先生
「数字を文字列に変換するには、str()関数やformat()メソッドを使いますよ。」
生徒
「それってどういうときに使うんですか?」
先生
「たとえば、数値と文字を一緒に表示したいときや、計算結果を文章の中に入れたいときですね。では、詳しく見ていきましょう!」
1. str()関数とは?数値から文字列へ変換する基本
Pythonで数値(整数や浮動小数点数)を「文字」として扱いたいときに最もよく使われるのが、str()関数です。コンピューターは「計算するための数字」と「表示するための文字」を明確に区別しています。そのため、数値をメッセージとして表示したり、他の文字と組み合わせたりするには、まず「文字列型(str)」という形式に変換してあげる必要があります。
使い方はとても簡単で、変換したい数値をstr()のカッコの中に入れるだけです。プログラミングが初めての方でも、まずはこの書き方を覚えれば、数値の扱いがぐっと楽になります。
# 1. 数値(整数)を変数に代入します
number = 123
# 2. str()関数を使って、数値から文字列に変換します
text = str(number)
# 3. 結果を表示して確認してみましょう
print(text)
# 4. データの「型」を確認すると、str(文字列)になっていることがわかります
print(type(text))
123
<class 'str'>
上記のサンプルでは、最初は計算に使えるint(整数)だった123が、str()を通すことでテキストとしての'123'に変わりました。type()関数は、そのデータが今どんな種類(型)なのかを教えてくれる便利なツールです。実行結果に<class 'str'>と表示されていれば、無事に文字列への変換が成功しています。
2. 数値と文字列を結合したいとき(TypeErrorの回避策)
Pythonでプログラミングをしていると、メッセージの中に計算結果や変数の数字を混ぜて表示したい場面がよくあります。しかし、Pythonには「異なるデータ型同士をそのまま足し算(結合)できない」という厳格なルールがあります。
例えば、文字列の"年齢は"と数値の20を+記号でつなごうとすると、コンピューターは「文字と数字、どっちのルールで計算すればいいの?」と迷ってしまい、TypeErrorというエラーを出して止まってしまいます。これを解決するために、数値をstr()関数で包んで、一時的に「文字」扱いにしてあげる必要があります。
# 1. 数値型の変数を用意します
age = 20
# 2. 数値をstr()で文字列に変換してから、前後の文字と「+」で結合します
# これをしないと「TypeError: can only concatenate str (not "int") to str」が発生します
message = "私の年齢は" + str(age) + "歳です。"
# 3. 結合された一つの文章を表示します
print(message)
私の年齢は20歳です。
このコードでは、str(age)と書くことで、中身の20が「計算用の数値」から「表示用のテキスト」に変換されています。その結果、前後のテキストとスムーズに連結され、一つの自然な文章として出力できるようになります。初心者の方が最初につまずきやすいポイントですが、「文字と数字を混ぜるときはstr()でおまじないをかける」と覚えておけば安心です。
3. format()メソッドとは?可読性を高めるテンプレート機能
数値を文字列に組み込む際、str()関数を使って「+」でつなぐ方法はシンプルですが、文章が長くなるとコードが複雑になりがちです。そこで便利なのがformat()メソッドです。この方法は、あらかじめ文章の雛形(テンプレート)を作っておき、後から数値をパズルのようにはめ込むイメージです。
{}(波括弧)を「値が入る予約席」として文字列の中に配置し、その後に.format(変数名)と書き加えるだけで、Pythonが自動的に数値を文字列に変換して埋め込んでくれます。型変換を意識せずに書けるため、ミスが減り、コードの見た目もスッキリと美しくなるのがメリットです。
# 1. 埋め込みたい数値を用意します
age = 25
# 2. 文字列の中の「{}」が、format()の引数に置き換わります
# 自動で文字列に変換されるため、str(age)と書く必要はありません
text = "私は{}歳です".format(age)
# 3. 結果を表示します
print(text)
私は25歳です
プログラミング未経験の方にとって、"私は" + str(age) + "歳です"という書き方は「"」や「+」が入り乱れて混乱しやすいものですが、format()を使えば、出力したい文章の形を崩さずに記述できるため、直感的に理解しやすくなります。まずは「{}はデータの予約席」と覚えておきましょう。
4. 複数の数値を同時に入れる:複雑な文章もスッキリ解決
プログラミングをしていると、「名前」「日付」「金額」など、複数のデータを一つの文章にまとめて表示したいケースがよくあります。str()関数でこれらをつなごうとすると、+記号や引用符(")が連続してしまい、書き間違い(構文エラー)の原因になりがちです。
そこで役立つのが、format()メソッドによる複数指定です。文字列の中に{}(波括弧)を複数用意しておけば、.format()の引数に渡した順番通りに、数値や文字が自動で流し込まれます。この方法なら、文章の構造が一目でわかるため、初心者の方でもミスなく複雑なメッセージを作成できます。
# 1. 埋め込みたい複数のデータ(文字列と数値)を用意します
user_name = "佐藤"
items_count = 3
total_price = 1500
# 2. {}を複数使い、format()の中に順番に変数を入れるだけ!
# 型変換(str())を個別に行う必要がないのでコードが綺麗になります
message = "{}様、今回は{}点の購入で、合計{}円です。".format(user_name, items_count, total_price)
# 3. 結果を確認します
print(message)
佐藤様、今回は3点の購入で、合計1500円です。
上記の例のように、変数の型(名前は文字、個数は整数など)がバラバラでも、Pythonが気を利かせてすべて適切な形で埋め込んでくれます。ポイントは、「左から数えた{}の数」と「format()の中に入れた変数の数」を一致させること。これさえ守れば、何個でも自由にデータを差し込むことが可能です。
5. 書式を整える:小数点や桁数の表示(書式指定子)
数値を文字列に変換する際、単に文字にするだけでなく「見た目をきれいに整えたい」という場面があります。例えば、家計簿アプリで「123.4567...」と続く計算結果を「123円」と四捨五入して表示したり、テストの結果を「001位」のように0で埋めて桁を揃えたりする場合です。
format()メソッドの {} の中に :(コロン)に続けて特定のルール(書式指定子)を書くことで、驚くほど簡単に表示形式をコントロールできます。プログラミング未経験の方でも、まずは「小数点以下の桁数指定」からマスターしてみましょう。
# 1. 小数点以下の長い数値を用意します
pi = 3.1415926535
# 2. 小数点第2位まで表示するように指定(:.2f)
# 「.2」が小数点以下の桁数、「f」は浮動小数点数(float)を意味します
text_pi = "円周率は{:.2f}です。".format(pi)
# 3. 金額など、桁を揃えたい場合(03d:3桁になるよう0で埋める)
number = 7
text_id = "会員番号は{:03d}番です。".format(number)
# 結果を表示します
print(text_pi)
print(text_id)
円周率は3.14です。
会員番号は007番です。
上記のサンプルにある {:.2f} は、「小数点以下2桁まで表示してね」という命令です。勝手に四捨五入もしてくれるため、非常に便利です。また、{:03d} のように書けば、1桁の数字でも「007」のように幅を揃えて表示できます。これらは「書式指定」と呼ばれ、ユーザーにとって読みやすいレポートや画面を作るために欠かせないテクニックです。
6. 文字列に変換した数値を保存・加工する
数値を文字列に変換すると、ファイルに保存したり、文章として画面に出力したり、SNS投稿用の文を作ったりと、いろんな使い方ができます。
temperature = 26.3
message = "今日の気温は" + str(temperature) + "度です"
print(message)
今日の気温は26.3度です
このように、実際の数値をわかりやすく表示するためには、数値を文字列に変換する操作がとても大切になります。
7. format()の応用:順番を指定する
format()では、{0}や{1}のように数字で順番を指定することもできます。
text = "{1}と{0}が逆になります".format("左", "右")
print(text)
右と左が逆になります
位置を自由に指定できるので、使い方によってはとても便利です。
8. f文字列(f-string)もおすすめ
Python 3.6以降では、f"文字列"という新しい書き方もあります。これは、{}の中に直接変数を書くだけで、読みやすくて書きやすい方法です。
name = "花子"
age = 22
text = f"名前は{name}、年齢は{age}歳です"
print(text)
名前は花子、年齢は22歳です
f文字列は、str()やformat()よりもシンプルに書けるため、最近のPythonではよく使われています。
まとめ
Pythonで数値を文字列に変換する方法として代表的なものがstr()関数とformat()メソッドであり、どちらもプログラムを読みやすく整理し、柔軟な文章生成やデータ加工に役立つ基本的な機能です。数値をそのまま画面に表示するだけなら単純ですが、文章と結合したり、整った形式で見せたり、複数の値を一度に扱ったりする場合には、数値を文字列として扱えるように変換する仕組みが欠かせません。str()はもっともシンプルで迷わず使える変換方法であり、特に初心者が最初に覚える変換手段として最適です。一方、format()は文章中の好きな位置に値を埋め込めるため、動的に文章を生成する処理に非常に適しています。Pythonが持つ柔軟な文字列操作を活かすためにも、この二つの使い方をしっかり身につけておくことはとても重要です。 数値と文字列を一緒に扱う場面は、プログラムの中で意外なほど多くあります。たとえば入力フォームから受け取った数値を文章で表示したり、計算結果を説明文の中に差し込んだり、画面の出力を読みやすく整えたりする場合、数値のままでは扱えないため、必ず文字列化する必要があります。また、ログの生成やメールの送信、レポート形式の出力などでは、文章と数値を混ぜて表現することがほぼ必須となるため、str()やformat()のような変換処理は実践的なプログラムのあらゆる場面で活用されます。この変換の仕組みを理解しておくことで、プログラムの見通しも良くなり、コードの品質向上にもつながります。 format()を使うと、書式を整えた美しい出力が簡単に実現できるのも大きな魅力です。小数点以下の桁数を調整する処理は日常的に行われる計算の中で頻繁に登場し、価格表示や割合表示、統計値の出力など、正確で読みやすい数値表示を行うためには欠かせない技術です。{"{:.2f}".format(price)} のように書けば、面倒な繰り上げ処理も自動で行ってくれます。また、複数の値を同時に埋め込む場合でも、{} の順番さえ意識すれば柔軟に文章の構造を編集でき、より読みやすいコードが書けるようになります。読み手の目を意識したプログラミングは、実用的なコードを書くうえでとても大切です。 また、Pythonではformat()だけでなく、f文字列という新しい記法もよく使われるようになってきました。f文字列は処理速度が速く、文章の中で変数を直感的に扱えるため、近年ではもっとも利用される機会の多い方法です。たとえば f"{name}さんの年齢は{age}歳です" と書くだけで、必要な部分に変数が埋め込まれ、読みやすいコードになります。str()、format()、そしてf文字列はどれも数値を文字として扱える基本的な方法であり、用途に応じて使い分けることで、整った美しいプログラムを組み立てることができます。 数値を文字列に変換する操作は、単に表示のためだけに行われるものではありません。データを加工して別の形式へ変換したり、整形した文章をファイルに保存したり、Web APIのレスポンスを生成したりと幅広い活用場面があります。実際の開発では、これらの変換はほんの小さな技術のようでありながら、完成度の高いプログラムを作り上げるために欠かせない要素であることを強く実感します。今回学んだ基礎知識は、今後より高度な処理を学ぶ上でも必ず役立ちます。
サンプルコード:str()・format()・f文字列の比較例
number = 42
price = 1234.567
# str()で変換
text1 = "数値は" + str(number) + "です"
# format()で変換
text2 = "数値は{}です".format(number)
# 小数点以下2桁まで整形
text3 = "価格は{:.2f}円です".format(price)
# f文字列で埋め込み
text4 = f"数値は{number}、価格は{price:.2f}円です"
print(text1)
print(text2)
print(text3)
print(text4)
このサンプルコードでは、str()・format()・f文字列の違いがよく分かるようになっており、それぞれの特徴や用途を比べながら習得できます。数値を文字として扱いたい場面は多く、目的に応じて最適な方法を選ぶことで、処理の流れも理解しやすくなります。
生徒
「今日の内容で、str()とformat()の違いがよく分かりました!特にformat()で小数点を整える方法は便利ですね。」
先生
「その気づきはとても良いですね。書式を整える方法を知っておくと、計算結果を見やすく表示できるようになりますし、実務でもよく使われますよ。」
生徒
「あと、f文字列は書きやすくてびっくりしました。自然に書ける感じがします。」
先生
「最近のPythonではf文字列がよく使われています。用途に応じてどの方法が一番読みやすいかを考えながら使い分けると、さらに良いコードになりますよ。」
生徒
「はい!次から数値を扱うときは、今回の方法を使ってみます!」