文字列・バイト列のプレフィックス整理 | Python 3.3 – 3.7

Python 3.3 – 3.7の、文字列・バイト列プレフィックスを整理します。

以降における「バージョン x」は、Pythonのバージョンを意味します。
また、参考資料はバージョン3.7.4での資料を引用しています。

プレフィックス一覧

プレフィックス 意味
r ・raw strings
・バックスラッシュのエスケープが不要
r”C:\Users\misaki”
u ユニコード(通常の)文字列 u’あ’
f ・フォーマット済み文字列リテラル
・実行時に式として評価
f”My name is {name!r}.”
b バイト列リテラル b’\xe3\x81\x82′

※各プレフィックスは大文字も可
※rとf, rとbの組合せは可(例: fr, rf, br, rb)

参考:
2.4.1. 文字列およびバイト列リテラル

説明

r

rによって、バックスラッシュをリテラル文字として扱えます
これはWindowsのパスを扱うとき等に助かります。

rを使った場合

r"C:\Users\misaki"

rを使わない場合

"C:\\Users\\misaki"

u

バージョン 3.0で廃止になった u は、メンテナンス性向上の為、バージョン 3.3から再び導入されました。

u’あ’‘あ’は同じです。

>>> u'あ' == 'あ'
True

f

バージョン 3.6で追加されたフォーマット済み文字列リテラルは、プログラムの実行時に式として評価されます

>>> name = "Misaki"
>>> f"My name is {name!r}."
My name is 'Misaki'.

参考:
2.4.3. フォーマット済み文字列リテラル

b

bのバイト列リテラル、私は使う機会がありません。
適切な使用例になっているか分かりませんが、以下に記載します。

デコードすると通常の文字列になります。

>>> b'\xe3\x81\x82'.decode(encoding='utf_8')
'あ'

逆にバイト列を得るには、文字列をエンコードします。

'あ'.encode(encoding="utf_8")
b'\xe3\x81\x82'

encoding引数の値は、utf_8がデフォルトです。

参考:
bytes.decode(encoding=”utf-8″, errors=”strict”)
str.encode(encoding=”utf-8″, errors=”strict”)
標準エンコーディング

おわりに

Python 3.3 – 3.7 における、文字列・バイト列のプレフィックスを整理しました。
このあたりは各言語の特徴が表われる部分かなと思います。
バージョン依存性もあるので、しっかりキャッチアップしたいところです。
では。


YouTube: ミサキさん

問い合わせ先
Mail: caprico.aries@gmail.com
Twitter: https://twitter.com/caprico_aries(無言フォローもお気軽に)

コメント

タイトルとURLをコピーしました