Pythonのf文字列(f-strings)とは?基本から応用例までわかりやすく解説
Pythonには、文字列を整形するための新しい仕組みとして「f文字列(f-strings)」が用意されています。この機能はPython 3.6からPEP-498として導入されました。文字列リテラルの先頭に接頭辞「f」を付けることが名称の由来で、この「f」はformatting(書式設定)を意味し、f-stringsが文字列フォーマットに利用できることを示しています。
f-stringsを使うと、波括弧 {} の中に変数や式を直接埋め込めるため、従来の str.format() や % 演算子よりも簡潔で読みやすいコードを書けます。以下に、具体的な使用例をいくつか紹介します。
サンプル1:基本的な使い方
name = 'Rajesh'
age = 13 * 3
fString = f'My name is {name} and my age is {age}'
print(fString)
# 小文字の「f」の代わりに大文字の「F」を使うことも可能です。
print(F'My name is {name} and my age is {age}')
# fStringはすでに評価済みのため、その後変数の値を変更してもfStringの中身は変わりません。
name = 'Zack'
age = 44
print(fString)
実行結果
My name is Rajesh and my age is 39 My name is Rajesh and my age is 39 My name is Rajesh and my age is 39
この例からわかるように、f-stringは定義された時点で評価され、結果の文字列が確定します。その後に変数の値を変更しても、すでに作成したf-stringの内容は更新されない点に注意しましょう。
サンプル2:式の埋め込み・変換(!r)・日付フォーマット
from datetime import datetime
name = 'Rajesh'
age = 13 * 3
dt = datetime.now()
print(f'Age after ten years will be {age + 10}')
print(f'Name with quotes = {name!r}')
print(f'Default formatted Date = {dt}')
print(f'Modified Date format = {dt:%d/%m/%Y}')
実行結果
Age after ten years will be 49 Name with quotes = 'Rajesh' Default formatted Date = 2019-02-11 14:52:05.307841 Modified Date format = 11/02/2019
波括弧内では age + 10 のような算術演算もそのまま記述できます。また、!r を付けると repr() 形式(引用符付き)で表示され、コロン : の後に書式指定子を続ければ、日付の表示形式を自由にカスタマイズできます。
サンプル3:オブジェクトと属性へのアクセス
class Vehicle:
Model = 0
Brand = ''
def __init__(self, Model, Brand):
self.Model = Model
self.Brand = Brand
def __str__(self):
return f'E[Model={self.Model}, Brand = {self.Brand}]'
Car = Vehicle(2018, 'Maruti')
print(Car)
print(f'Vehicle: {Car}\nModel is {Car.Model} and Brand is {Car.Brand}')
実行結果
E[Model=2018, Brand = Maruti] Vehicle: E[Model=2018, Brand = Maruti] Model is 2018 and Brand is Maruti
__str__ メソッドの中でもf-stringは活躍します。さらに、{Car.Model} のようにドット記法でオブジェクトの属性へ直接アクセスできるのも便利なポイントです。
サンプル4:関数の呼び出し
f-stringsの中では、関数を呼び出すこともできます。
def Multiply(x, y):
return x * y
print(f'Multiply(40,20) = {Multiply(40,20)}')
実行結果
Multiply(40,20) = 800
サンプル5:lambda式の利用
x = -40.9
print(f'Lambda absolute of (-40.9) is : {(lambda x: abs(x))(x)}')
print(f'Lambda square of 4^2 is: {(lambda x: pow(x, 2))(4)}')
実行結果
Lambda absolute of (-40.9) is : 40.9 Lambda square of 4^2 is: 16
このように、f-stringsは単純な変数展開にとどまらず、式の埋め込み・変換・書式指定・メソッド呼び出しなど、さまざまな場面で柔軟に活用できる強力な機能です。Python 3.6以降のプロジェクトでは積極的に取り入れることで、コードの可読性と保守性を大きく向上させられます。
-
Pythonで文字列を逆順に反転する方法|追加メモリ不要のインプレース手法
文字の配列が与えられたとき、追加のメモリ領域を使用せずに文字列を逆順に反転することを考えます。たとえば、入力が [H, E, L, L, O] である場合、期待される出力は [O, L, L, E, H] となります。 解法のアプローチ この問題は「Two Pointers(ツーポインタ)」と呼ばれる定番のテクニックで効率的に解けます。考え方はシンプルで、配列の両端から中央に向かって文字を交換していくだけです。 手順 2つのポインタを用意します:start = 0、end = 文字列の長さ - 1 s[start] と s[end] の文字を入れ替えます start を1つ増やし、end を
-
Pythonのcasefold()メソッドとは?文字列の小文字変換と比較方法を解説
Pythonのcasefold()は、文字列内の英字をすべて小文字に変換するためのメソッドです。lower()と似ていますが、より積極的な変換を行う点が特徴で、ドイツ語の「ß」が「ss」に変換されるなど、国際化対応において強力な働きをします。2つの文字列に対してcasefold()を適用すれば、大文字・小文字の違いを無視して値を一致させることができます。そのため、ユーザー入力の比較や検索処理などで非常に役立ちます。casefold()の基本的な使い方次の例では、文字列にcasefold()を適用し、すべて小文字に変換された結果を出力しています。コード例string = BestTutorial