🦁

Pythonのf-stringsとエンコーディングについて

2025/03/03に公開

Pythonのf-stringsとエンコーディングについて

f-stringsとは?

f-strings(フォーマット済み文字列リテラル)は、Python 3.6から導入された便利な文字列フォーマット方法です。

基本的な使い方

f'...' のように、文字列の前に f を付けることで f-strings を使用できます。文字列の中に {} を使うと、その中の式が評価され、その結果に置き換えられます。

例:

name = "Alice"
age = 25
message = f"{name} is {age} years old."
print(message)

出力:

Alice is 25 years old.

format() との比較

従来の format() メソッドと比較すると、f-strings の方がシンプルに書けます。

format() を使った場合:

name = "Alice"
age = 25
message = "{} is {} years old.".format(name, age)
print(message)

f-strings を使った場合:

message = f"{name} is {age} years old."
print(message)

可読性が向上し、直感的に記述できるのが f-strings のメリットです。

計算や関数の結果を埋め込む

f-strings は単なる変数だけでなく、式(計算や関数の呼び出し)を直接埋め込むことも可能です。

例:

print(f"The sum of 2 and 3 is {2 + 3}.")
print(f"The length of 'hello' is {len('hello')}.")

出力:

The sum of 2 and 3 is 5.
The length of 'hello' is 5.

Python 3.8以降の = 記法

Python 3.8以降では = 記法 を使うことで、式の内容と結果を一緒に出力できるようになりました。

例:

value = 42
print(f"{value = }")
print(f"{2 + 3 = }")

出力:

value = 42
2 + 3 = 5

エンコーディングとは?

エンコーディングとは、文字列(str)をバイト列(bytes)に変換する処理のことです。ファイルに文字列を保存するときや、ネットワーク通信をするときに必要になります。

encode()decode()

Pythonの encode() メソッドを使うと、文字列を指定したエンコーディングのバイト列に変換できます。逆に、decode() を使うとバイト列を文字列に戻せます。

例:

text = "こんにちは"
encoded_text = text.encode("utf-8")  # UTF-8でエンコード
print(encoded_text)

decoded_text = encoded_text.decode("utf-8")  # UTF-8でデコード
print(decoded_text)

出力:

b'\xe3\x81\x93\xe3\x82\x93\xe3\x81\xab\xe3\x81\xa1\xe3\x81\xaf'
こんにちは

ファイル保存時のエンコーディング指定

ファイルを保存・読み込むときにエンコーディングを明示することで、文字化けを防ぐことができます。

例(UTF-8で保存・読み込み):

# 書き込み
with open("example.txt", "w", encoding="utf-8") as f:
    f.write("こんにちは")

# 読み込み
with open("example.txt", "r", encoding="utf-8") as f:
    text = f.read()
    print(text)

まとめ

  • f-stringsformat() よりもシンプルで可読性が高い。
  • f-strings では {} 内に計算や関数の結果も埋め込める。
  • Python 3.8以降では = 記法 により、式とその結果を同時に表示できる。
  • encode()strbytes に変換し、decode() はその逆を行う。
  • ファイルの読み書き時には適切なエンコーディングを指定すると文字化けを防げる。

Pythonを使う際は、f-strings を積極的に活用し、エンコーディングにも気を配ると良いでしょう!

Discussion