Helve’s Python memo

Pythonを使った機械学習やデータ分析の備忘録

Pythonのf-stringsで文字列を扱う

Python 3.6以降で実装されたf-stringsと呼ばれる数字や文字列の表記法について、学術計算で最低限必要な範囲でまとめた。
本記事では、整数・小数の桁数指定や、指数表示を扱う。

目次

f-stringsの基本

f-stringsでは、変数の桁数などを指定してprint文による表示やファイル保存できる。
基本的な使い方は以下の通り。

>>> a = 123             # 変数
>>> print(f"{a}")       # フォーマット指定なし
123
>>> print(f"{a:08.2f}") # フォーマット指定あり
00123.00

fの後にクオーテーションを2つ置き、その中で波括弧を閉じる。
波括弧内に変数を記述する。
オプションで、変数の後にコロン:を挟んでフォーマットを指定する。

なお、クオーテーションは、シングルクォート'でもダブルクォート"でも可。

全体の桁数を指定する場合

書式フォーマットを整数にすると、数値全体の桁数を指定できる。
小数点は1桁として扱われる。
先頭を0埋めする場合は、最初に0を置く。

>>> a = 123           # 整数
>>> print(f"{a:5}")   # 5桁で表示
  123
>>> print(f"{a:05}")  # 0埋め
00123
>>>
>>> b = 12.3456       # 小数
>>> print(f"{b:10}")  # 10桁で表示
   12.3456
>>> print(f"{b:010}") # 0埋め
00012.3456

なお、変数よりも少ない桁数を指定すると、変数を最低限表示するのに必要な桁数で表示される。

>>> a = 123         # 3桁の整数
>>> print(f"{a:1}") # 1桁に指定->3桁で表示される
123
>>>
>>> b = 12.3456     # 7桁の小数
>>> print(f"{b:2}") # 2桁に指定->7桁で表示される
12.3456

小数点以下の桁数を指定する場合

書式フォーマットの末尾にfを追加すると、小数点以下の桁数を指定できる。
.[数値]fとすると小数点以下の桁数が数値になる。
変数が整数型でも小数型でも同じ動作をする。
また、小数の末尾は四捨五入される。

小数点を含む全体の桁数をさらに指定する場合、小数点の前に記述する。
先頭を0埋めする場合は、さらに最初に0を置く。
ただし、小数点以下の桁数を0にすると、小数点は出力されない。

>>> a = 123             # 整数
>>> print(f"{a:.2f}")   # 小数点以下2桁
123.00
>>> print(f"{a:8.2f}")  # 小数点以下2桁、全体は8桁
  123.00
>>> print(f"{a:08.2f}") # さらに先頭を0埋めする
00123.00
>>> print(f"{a:08.0f}") # 小数点以下0桁
00000123
>>>
>>> b = 12.3456         # 小数
>>> print(f"{b:.2f}")   # 小数点以下2桁
12.35
>>> print(f"{b:8.2f}")  # 小数点以下2桁、全体は8桁
   12.35
>>> print(f"{b:08.2f}") # さらに先頭を0埋めする
00012.35
>>> print(f"{b:08.0f}") # 小数点以下0桁
00000012

指数表示の場合

書式フォーマットの末尾にeまたはEを追加すると、指数表示になる。
表示される指数記号の大文字・小文字は、書式フォーマットと同じになる。
デフォルトの表示桁数は12桁(指数部分込み)でである。
変数が整数型でも小数型でも同じ動作をする。

>>> a = 123          # 整数
>>> print(f"{a:e}")  # 小文字
1.230000e+02
>>> print(f"{a:E}")  # 大文字
1.230000E+02
>>>
>>> b = 12.3456      # 小数
>>> print(f"{b:e}")  # 小文字
1.234560e+01
>>> print(f"{b:E}")  # 大文字
1.234560E+01

桁数の指定はfと同じ方法。
.[数値]e, .[数値]Eとすると小数点以下の桁数が数値になる。
また、小数の末尾は四捨五入される。

小数部と指数部を含む全体の桁数をさらに指定する場合、小数点の前に記述する。
先頭を0埋めする場合は、さらに最初に0を置く。
ただし、小数点以下の桁数を0にすると、小数点は出力されない。

>>> a = 123              # 整数
>>> print(f"{a:.3e}")    # 小数点以下3桁
1.230e+02
>>> print(f"{a:10.3e}")  # 小数点以下3桁、全体は10桁
 1.230e+02
>>> print(f"{a:010.3e}") # さらに先頭を0埋めする
01.230e+02
>>> print(f"{a:10.0e}")  # 小数点以下0桁
     1e+02

複数の変数や通常の文字列も表示する

1個のf-strings内に、複数の変数を表示できる。

>>> a = 123
>>> b = 12.3456
>>> print(f"{a}{b}")
12312.3456

上記のように変数を並べるとスペースが付かず、見づらい。
変数ではない文字列を表示したい場合は、波括弧の外側に文字列を置く。

>>> a = 123
>>> b = 12.3456
>>> print(f"figure1: {a}, figure2: {b}")
figure1: 123, figure2: 12.3456

参考

f-stringsの詳細をより知りたい方は、以下のページを参考のこと。

Python, formatで書式変換(0埋め、指数表記、16進数など) | note.nkmk.me
f-strings の使用例 - Qiita

※Adblockが有効の場合やモバイル版ページでは、シェアボタンをクリックできません