Python str関数の使い方|数値を文字列に変換する基本

Python str関数の基本的な使い方を初心者向けに解説。数値から文字列への変換、様々なデータ型の変換、書式設定、実践的な活用方法まで詳しく紹介します。

Learning Next 運営
17 分で読めます

みなさん、プログラミングで数値と文字列を一緒に表示したいと思ったことはありませんか?

「数値を文字列に変換したいけど、どうすればいいの?」 「str関数って何?どうやって使うの?」 「エラーが出て困ってる...」

こんな疑問を持っている方も多いのではないでしょうか。

でも大丈夫です! この記事では、Pythonのstr関数について、基本から実践的な使い方まで、初心者の方でもわかりやすく解説します。

str関数をマスターすれば、データの表示や文字列操作がとても楽になりますよ!

str関数って何?

str関数とは、どんなデータでも文字列に変換してくれるPythonの便利な機能です。

文字列変換が必要な理由

プログラミングでは、数値や他のデータを文字として表示したい場面がよくあります。 でも、Pythonでは数値と文字列を直接くっつけることができません。

# これはエラーになります
age = 25
try:
message = "私の年齢は" + age + "歳です"
except TypeError as e:
print(f"エラー: {e}")

このコードを実行すると、「文字列と数値は結合できません」というエラーが出ます。 そこで登場するのがstr関数なんです。

str関数の基本的な使い方

str関数を使えば、この問題が簡単に解決できます。

# str関数を使って数値を文字列に変換
age = 25
age_str = str(age)
message = "私の年齢は" + age_str + "歳です"
print(message) # 私の年齢は25歳です
# 変換前と変換後の型を確認
print(f"変換前: {age} (型: {type(age)})") # 変換前: 25 (型: <class 'int'>)
print(f"変換後: {age_str} (型: {type(age_str)})") # 変換後: 25 (型: <class 'str'>)

str関数を使うことで、数値25が文字列の「25」に変わりました。 これで文字列同士の結合ができるようになります。

基本的な数値変換をやってみよう

str関数でいろんな数値を文字列に変換してみましょう。

整数の変換

まずは、整数(1、2、3のような数値)から始めます。

# いろんな整数を文字列に変換
positive_num = 42
negative_num = -17
zero = 0
print(f"正の数: '{str(positive_num)}'") # 正の数: '42'
print(f"負の数: '{str(negative_num)}'") # 負の数: '-17'
print(f"ゼロ: '{str(zero)}'") # ゼロ: '0'
# 大きな数値も変換できます
big_number = 1234567890
big_str = str(big_number)
print(f"大きな数: {big_str}")
print(f"桁数: {len(big_str)}桁")

整数は、見た目そのままの文字列に変換されます。 マイナスの記号もそのまま残るので安心ですね。

小数の変換

次は、小数(3.14のような数値)を変換してみましょう。

# 小数を文字列に変換
pi = 3.14159
price = 1500.5
percentage = 0.85
print(f"円周率: {str(pi)}") # 円周率: 3.14159
print(f"価格: {str(price)}") # 価格: 1500.5
print(f"割合: {str(percentage)}") # 割合: 0.85
# とても小さい数や大きい数
tiny = 0.000001
huge = 1.5e10
print(f"小さい数: {str(tiny)}") # 小さい数: 1e-06
print(f"大きい数: {str(huge)}") # 大きい数: 15000000000.0

小数も、基本的にはそのままの形で文字列になります。 とても小さい数や大きい数は、科学記法で表示される場合もあります。

いろんなデータ型を変換してみよう

str関数は、数値以外のデータも文字列に変換できます。

ブール値(True/False)の変換

True(真)やFalse(偽)も文字列にできます。

# ブール値を文字列に変換
is_sunny = True
is_raining = False
print(f"晴れ: '{str(is_sunny)}'") # 晴れ: 'True'
print(f"雨: '{str(is_raining)}'") # 雨: 'False'
# 条件判定の結果も変換できます
age = 20
is_adult = age >= 18
print(f"大人?: {str(is_adult)}") # 大人?: True

TrueはTrueという文字列に、FalseはFalseという文字列になります。

リストや辞書の変換

リスト(配列)や辞書も文字列に変換できます。

# リストを文字列に変換
fruits = ["りんご", "バナナ", "みかん"]
numbers = [1, 2, 3, 4, 5]
print(f"果物リスト: {str(fruits)}") # 果物リスト: ['りんご', 'バナナ', 'みかん']
print(f"数値リスト: {str(numbers)}") # 数値リスト: [1, 2, 3, 4, 5]
# 辞書を文字列に変換
person = {"名前": "田中", "年齢": 25}
print(f"人物情報: {str(person)}") # 人物情報: {'名前': '田中', '年齢': 25}
# 空のデータも変換できます
empty_list = []
empty_dict = {}
print(f"空リスト: '{str(empty_list)}'") # 空リスト: '[]'
print(f"空辞書: '{str(empty_dict)}'") # 空辞書: '{}'

リストや辞書は、その構造をそのまま表した文字列になります。

None(何もない値)の変換

Pythonの特別な値「None」も変換できます。

# None値を文字列に変換
nothing = None
print(f"Nothing: '{str(nothing)}'") # Nothing: 'None'
# 関数が何も返さない場合
def say_hello():
print("こんにちは")
# return文がない
result = say_hello()
print(f"関数の戻り値: '{str(result)}'") # 関数の戻り値: 'None'

Noneは「None」という文字列に変換されます。

実際に使ってみよう

str関数を使った実用的な例をいくつか見てみましょう。

成績表示プログラム

学生の成績を表示するプログラムを作ってみます。

# 学生の成績情報
name = "田中太郎"
age = 20
scores = [85, 92, 78, 95]
average = sum(scores) / len(scores)
# str関数を使って情報を組み立て
info = "名前: " + name + " (" + str(age) + "歳)
"
info += "点数: " + str(scores) + "
"
info += "平均: " + str(round(average, 1)) + "点"
print(info)

このプログラムを実行すると、以下のような結果が表示されます。

名前: 田中太郎 (20歳) 点数: [85, 92, 78, 95] 平均: 87.5点

str関数のおかげで、数値と文字列を自由に組み合わせられました。

商品価格表示プログラム

お店の商品価格を表示するプログラムです。

# 商品情報
products = {
"ノートPC": 120000,
"マウス": 2500,
"キーボード": 8000
}
# 価格表を作成
print("商品価格表")
print("-" * 20)
total = 0
for product, price in products.items():
# 桁区切りをつけて見やすく
price_str = f"{price:,}"
print(product + ": " + price_str + "円")
total += price
print("-" * 20)
total_str = f"{total:,}"
print("合計: " + total_str + "円")

実行結果:

商品価格表 -------------------- ノートPC: 120,000円 マウス: 2,500円 キーボード: 8,000円 -------------------- 合計: 130,500円

ログメッセージ作成

プログラムの動作記録(ログ)を作るときにも便利です。

import datetime
# 現在の時刻を取得
now = datetime.datetime.now()
timestamp = now.strftime("%Y-%m-%d %H:%M:%S")
# ログメッセージを作成
def create_log(level, message, data=None):
log = "[" + timestamp + "] " + level + ": " + message
if data is not None:
log += " | データ: " + str(data)
return log
# いろんなログを作成
print(create_log("INFO", "アプリ開始"))
print(create_log("INFO", "ユーザーデータ読み込み", {"id": 123, "name": "田中"}))
print(create_log("ERROR", "計算エラー", [1, 2, "無効な値"]))

実行結果(時刻は実行時によって変わります):

[2024-07-07 15:30:25] INFO: アプリ開始 [2024-07-07 15:30:25] INFO: ユーザーデータ読み込み | データ: {'id': 123, 'name': '田中'} [2024-07-07 15:30:25] ERROR: 計算エラー | データ: [1, 2, '無効な値']

もっと見やすく表示する方法

str関数と組み合わせて、より見やすい表示を作る方法をご紹介します。

f-string(フォーマット文字列)との併用

f-stringとstr関数を組み合わせると、より簡単に文字列を作れます。

# 従来の方法(str関数のみ)
name = "佐藤"
age = 30
score = 87.5
old_way = "名前: " + name + ", 年齢: " + str(age) + ", 点数: " + str(score)
print("従来の方法:", old_way)
# f-stringを使った方法(推奨)
new_way = f"名前: {name}, 年齢: {age}, 点数: {score}"
print("f-string:", new_way)
# 小数点の桁数を指定
formatted = f"名前: {name}, 年齢: {age}, 点数: {score:.1f}"
print("桁数指定:", formatted)

f-stringを使うと、コードがすっきりして読みやすくなります。

表形式での表示

データを表のように整理して表示する方法です。

# 学生データ
students = [
{"name": "田中", "math": 85, "english": 92},
{"name": "佐藤", "math": 78, "english": 88},
{"name": "鈴木", "math": 95, "english": 84}
]
# 表のヘッダー
print("成績表")
print("-" * 25)
print("名前 数学 英語")
print("-" * 25)
# 各学生のデータを表示
for student in students:
name = student["name"]
math = str(student["math"])
english = str(student["english"])
# 名前を3文字で揃える
name_padded = name + " " # スペースを追加
row = name_padded[:3] + " " + math.rjust(3) + " " + english.rjust(3)
print(row)
print("-" * 25)

実行結果:

成績表 ------------------------- 名前 数学 英語 ------------------------- 田中 85 92 佐藤 78 88 鈴木 95 84 -------------------------

エラーを避けるコツ

str関数を使う時に注意したいポイントをご紹介します。

安全な変換方法

何が入っているかわからないデータを変換する時の安全な方法です。

def safe_str(value):
"""安全にstr関数を実行"""
try:
return str(value)
except Exception as e:
return f"変換エラー: {e}"
# いろんなデータで試してみる
test_data = [123, 3.14, True, [1, 2, 3], None, "文字列"]
print("安全な変換テスト:")
for data in test_data:
result = safe_str(data)
print(f"{type(data).__name__}: {result}")

この方法を使えば、どんなデータが来てもエラーで止まることがありません。

None値の処理

None値が含まれるかもしれないデータの処理方法です。

def format_user_info(name, age, email):
"""ユーザー情報を整形(None値対応)"""
# None値のチェックと変換
name_str = str(name) if name is not None else "未設定"
age_str = str(age) if age is not None else "未設定"
email_str = str(email) if email is not None else "未設定"
return f"名前: {name_str}, 年齢: {age_str}, メール: {email_str}"
# テストデータ
print(format_user_info("田中", 25, "tanaka@example.com"))
print(format_user_info("佐藤", None, "sato@example.com"))
print(format_user_info(None, 30, None))

実行結果:

名前: 田中, 年齢: 25, メール: tanaka@example.com 名前: 佐藤, 年齢: 未設定, メール: sato@example.com 名前: 未設定, 年齢: 30, メール: 未設定

まとめ

Pythonのstr関数について、基本から実践的な使い方まで詳しく解説しました。

今日覚えてほしいポイント

  • str関数は、どんなデータでも文字列に変換できる
  • 数値と文字列を組み合わせる時に必要
  • リストや辞書なども文字列にできる
  • f-stringと組み合わせると便利
  • エラー対策も忘れずに

str関数が活躍する場面

  • データの表示や出力
  • ログメッセージの作成
  • ファイルへの書き込み
  • ユーザーへの情報提示

str関数は、Pythonプログラミングでとても重要な機能の一つです。 今日学んだことを活かして、実際にプログラムを作ってみてくださいね。

まずは簡単な数値の変換から始めて、徐々に複雑なデータの変換にも挑戦してみましょう! きっとプログラミングがもっと楽しくなりますよ。

関連記事