[Python] 文字列に変数を埋め込んで1つの文字列を生成する方法
Pythonでは、文字列に変数を埋め込んで1つの文字列を生成する方法として、主に3つの方法があります。
1つ目は、str.format()メソッドを使用する方法です。プレースホルダーを使って変数を埋め込むことができます。
2つ目は、f-strings(フォーマット済み文字列リテラル)を使用する方法です。Python 3.6以降で利用可能で、変数を直接埋め込むことができます。
3つ目は、%演算子を使用する方法です。古いスタイルのフォーマットですが、依然として使用されています。
文字列フォーマットの基本
Pythonでは、文字列に変数を埋め込んで1つの文字列を生成する方法がいくつかあります。
ここでは、主な方法を紹介します。
文字列連結による方法
文字列を連結することで、変数を含む新しい文字列を作成できます。
プラス演算子を使った連結
プラス演算子+を使って、複数の文字列を連結することができます。
name = "太郎"
age = 25
greeting = "こんにちは、" + name + "さん。" + str(age) + "歳です。"
print(greeting)こんにちは、太郎さん。25歳です。コンマを使った連結
print()関数にコンマを使って複数の引数を渡すと、自動的にスペースで区切られた文字列が生成されます。
name = "花子"
age = 30
print("こんにちは、", name, "さん。", age, "歳です。")こんにちは、 花子 さん。 30 歳です。パーセント演算子によるフォーマット
パーセント演算子%を使って、文字列に変数を埋め込むことができます。
基本的な使い方
基本的な使い方は、%の後に変数を指定します。
name = "次郎"
age = 20
greeting = "こんにちは、%sさん。%d歳です。" % (name, age)
print(greeting)こんにちは、次郎さん。20歳です。複数の変数を埋め込む方法
複数の変数を埋め込む場合も、同様にカンマで区切って指定します。
name = "三郎"
age = 22
hobby = "サッカー"
greeting = "こんにちは、%sさん。%d歳で、趣味は%sです。" % (name, age, hobby)
print(greeting)こんにちは、三郎さん。22歳で、趣味はサッカーです。フォーマット指定子の使い方
フォーマット指定子を使うことで、数値の表示形式を指定できます。
price = 1500
formatted_price = "価格は¥%dです。" % price
print(formatted_price)価格は¥1500です。str.format()メソッドによるフォーマット
str.format()メソッドを使うと、より柔軟に文字列をフォーマットできます。
基本的な使い方
{}を使って埋め込む位置を指定し、format()メソッドで変数を渡します。
name = "四郎"
age = 28
greeting = "こんにちは、{}さん。{}歳です。".format(name, age)
print(greeting)こんにちは、四郎さん。28歳です。名前付き引数を使ったフォーマット
名前付き引数を使うことで、より明示的に変数を指定できます。
greeting = "こんにちは、{name}さん。{age}歳です。".format(name="五郎", age=35)
print(greeting)こんにちは、五郎さん。35歳です。インデックスを使ったフォーマット
インデックスを使って、引数の順序を指定することも可能です。
greeting = "こんにちは、{0}さん。{1}歳です。".format("六郎", 40)
print(greeting)こんにちは、六郎さん。40歳です。フォーマット指定子の使い方
str.format()メソッドでもフォーマット指定子を使うことができます。
price = 2500
formatted_price = "価格は¥{:.2f}です。".format(price)
print(formatted_price)価格は¥2500.00です。f文字列(フォーマット済み文字列リテラル)
Python 3.6以降では、f文字列を使うことで、より簡潔に文字列をフォーマットできます。
基本的な使い方
文字列の前にfを付けることで、変数を直接埋め込むことができます。
name = "七郎"
age = 32
greeting = f"こんにちは、{name}さん。{age}歳です。"
print(greeting)こんにちは、七郎さん。32歳です。式を埋め込む方法
f文字列では、式を直接埋め込むことも可能です。
a = 5
b = 10
result = f"{a} + {b} = {a + b}"
print(result)5 + 10 = 15フォーマット指定子の使い方
f文字列でもフォーマット指定子を使うことができます。
price = 3000
formatted_price = f"価格は¥{price:.2f}です。"
print(formatted_price)価格は¥3000.00です。応用例
文字列フォーマットの基本を理解したら、次は応用的な使い方を見ていきましょう。
ここでは、複雑な文字列フォーマットやログメッセージのフォーマット、ユーザー入力を含む文字列の生成について説明します。
複雑な文字列フォーマット
ネストされたフォーマット
ネストされたフォーマットを使用することで、より複雑な文字列を生成できます。
例えば、リストや辞書の値を埋め込むことが可能です。
user = {"name": "八郎", "age": 29}
greeting = "こんにちは、{name}さん。{age}歳です。".format(**user)
print(greeting)こんにちは、八郎さん。29歳です。辞書を使ったフォーマット
辞書を使って、キーを指定することで、より柔軟に文字列を生成できます。
data = {
    "name": "九郎",
    "age": 27,
    "hobby": "読書"
}
message = "こんにちは、{name}さん。{age}歳で、趣味は{hobby}です。".format(**data)
print(message)こんにちは、九郎さん。27歳で、趣味は読書です。ログメッセージのフォーマット
ログメッセージは、プログラムの実行状況を記録するために重要です。
フォーマットを工夫することで、可読性の高いログを生成できます。
ログの基本的な書き方
Pythonのloggingモジュールを使って、ログメッセージをフォーマットすることができます。
import logging
logging.basicConfig(format='%(asctime)s - %(levelname)s - %(message)s', level=logging.INFO)
logging.info("プログラムが開始されました。")2023-10-01 12:00:00,000 - INFO - プログラムが開始されました。ログレベルとフォーマット
ログレベルを指定することで、重要度に応じたメッセージを記録できます。
import logging
logging.basicConfig(format='%(asctime)s - %(levelname)s - %(message)s', level=logging.DEBUG)
logging.debug("デバッグ情報")
logging.warning("警告メッセージ")2023-10-01 12:00:00,000 - DEBUG - デバッグ情報
2023-10-01 12:00:00,000 - WARNING - 警告メッセージユーザー入力を含む文字列の生成
ユーザーからの入力を受け取って、動的に文字列を生成することもできます。
input()関数を使った入力
input()関数を使って、ユーザーからの入力を受け取ります。
name = input("あなたの名前は何ですか?")
age = input("あなたの年齢は何歳ですか?")
greeting = f"こんにちは、{name}さん。{age}歳ですね。"
print(greeting)あなたの名前は何ですか?太郎
あなたの年齢は何歳ですか?25
こんにちは、太郎さん。25歳ですね。安全な文字列フォーマット
ユーザーからの入力を含む場合、セキュリティに注意が必要です。
f文字列を使う際は、特に注意が必要です。
name = input("あなたの名前は何ですか?")
age = input("あなたの年齢は何歳ですか?")
# 安全なフォーマットを使用
greeting = "こんにちは、{}さん。{}歳ですね。".format(name, age)
print(greeting)あなたの名前は何ですか?花子
あなたの年齢は何歳ですか?30
こんにちは、花子さん。30歳ですね。このように、ユーザー入力を含む場合でも、適切なフォーマットを使用することで、安全に文字列を生成できます。
まとめ
この記事では、Pythonにおける文字列フォーマットのさまざまな方法について解説しました。
基本的な連結から、f文字列やstr.format()メソッド、さらにはログメッセージやユーザー入力を含む文字列の生成まで、幅広くカバーしました。
これを機に、あなたのプログラムに適した文字列フォーマットの方法を試してみてください。
 
![[Python] 変数の使い方 – 宣言/初期化/代入/演算](https://af-e.net/wp-content/uploads/2024/10/thumbnail-46706.png)
![[Python] nonlocalの使い方 – globalとの違いも解説](https://af-e.net/wp-content/uploads/2024/10/thumbnail-46705.png)
![[Python] globals関数の使い方 – グローバル名前空間にあるシンボルを取得](https://af-e.net/wp-content/uploads/2024/10/thumbnail-46704.png)
![[Python] global変数の使い方を初心者向けに解説](https://af-e.net/wp-content/uploads/2024/10/thumbnail-46703.png)
![[Python] del文の使い方 – オブジェクトの削除](https://af-e.net/wp-content/uploads/2024/10/thumbnail-46702.png)
![[Python] 変数のスコープ範囲について解説](https://af-e.net/wp-content/uploads/2024/08/thumbnail-7675.png)
![[Python] 変数におけるデータ型について解説](https://af-e.net/wp-content/uploads/2024/08/thumbnail-7676.png)
![[Python] 変数の型を確認する方法](https://af-e.net/wp-content/uploads/2024/08/thumbnail-7677.png)
![[Python] 変数宣言で型も宣言する方法](https://af-e.net/wp-content/uploads/2024/08/thumbnail-7678.png)
![[Python] 変数を削除してメモリから解放する方法](https://af-e.net/wp-content/uploads/2024/08/thumbnail-7679.png)