🦁
Pythonのf-stringsとエンコーディングについて
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-strings
はformat()
よりもシンプルで可読性が高い。 -
f-strings
では{}
内に計算や関数の結果も埋め込める。 - Python 3.8以降では
= 記法
により、式とその結果を同時に表示できる。 -
encode()
はstr
をbytes
に変換し、decode()
はその逆を行う。 - ファイルの読み書き時には適切なエンコーディングを指定すると文字化けを防げる。
Pythonを使う際は、f-strings
を積極的に活用し、エンコーディングにも気を配ると良いでしょう!
Discussion