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)
説明
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'.
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(無言フォローもお気軽に)
コメント