文字列の操作-3
【開発環境】
OS:Win10(64ビット)
言語:Python3.8.5(64bit)
Python の統合開発環境:IDLE
【printf形式の書式化】
書式化演算子の % を使用することで数値や文字列に対して書式を設定し新しい文字列を作成することが出来る。
数値に対する書式化の例文

【変換指定子と変換する値の記述方法】
>>> #変換指定子と変換する値の記述方法
>>> name = "Suzuki"
>>> old = 18
>>> print("名前は%-8sです。年齢は%03d歳です。" %(name,old))
名前はSuzuki です。年齢は018歳です。
>>>
【変換指定子の指定方法】
変換指定子
→% (マップキー) 変換フラグ 最小フィールド幅 精度 精度長変換子 変換型
■変換型
"d" 符号付き 10 進整数
"i" 符号付き 10 進整数
"o" 符号付き 8 進数
"u" 旧式の型 -- 'd' と同じです
"x" 符号付き 16 進数 (小文字)
"X" 符号付き 16 進数 (大文字)
"e" 指数表記の浮動小数点数 (小文字)
"E" 指数表記の浮動小数点数 (大文字)
"f" 10 進浮動小数点数
"F" 10 進浮動小数点数
"g" 浮動小数点数。指数部が -4 以上または精度以下の場合には小文字指数表記、それ以外の場合には10進表記
"G" 浮動小数点数。指数部が -4 以上または精度以下の場合には大文字指数表記、それ以外の場合には10進表記
"c" 文字一文字 (整数または一文字からなる文字列を受理します)
"r" 文字列 (Python オブジェクトを repr() で変換します)
"s" 文字列 (Python オブジェクトを str() で変換します)
"a" 文字列 (Python オブジェクトを ascii() で変換します)
"%" 引数を変換せず、返される文字列中では文字 '%' になります
例えば
数値の値を 10 進数に変換するには %d と記述し 16 進数に変換するには %x と記述する。
Python 3.8.5 (tags/v3.8.5:580fbb0, Jul 20 2020, 15:57:54) [MSC v.1924 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>> print("10進数=%d, 16進数=%x" %(20,20))
10進数=20, 16進数=14
>>>
小数点を含む数値の値を指数表記に変換するには %e と記述し 10 進数の浮動小数点数(実際には固定小数点表記と思われる)に変換するには %f と記述する
>>>
>>> print("指数表記=%e, 固定小数点表記=%f" % (0.0752, 0.0752))
指数表記=7.520000e-02, 固定小数点表記=0.075200
■マップキー
マップキーは
→省略可能なオプションで、値を指定する時にタプルではなく辞書などのマップ型オブジェクトを使用する場合に使います。マップキーは () で囲って指定する。
>>>
>>> print("10進数=%(decnum)d, 16進数=%(hexnum)x" % {"hexnum":20, "decnum":20})
10進数=20, 16進数=14
>>>
■変換フラグ
変換フラグも省略可能なオプションで、次の値が用意されています
"#" 値の変換に"別の形式" を使う
"0" 数値型に対してゼロパディングを行う
"-" 変換された値を左寄せにする
" " 符号付きの変換で正の数の場合、前に一つスペースを空ける。そうでない場合は空文字になる
"+" 変換の先頭に符号文字 ('+' または '-') を付ける
例文
>>> print("数値1=%x, 数値2=%#x" % (30, 30))
数値1=1e, 数値2=0x1e
・変換フラグに "0" を指定した場合
>>> print("数値1=%5d, 数値2=%05d" % (30, 30))
数値1= 30, 数値2=00030
・変換フラグに "-" を指定した場合
>>> print("数値1=[%5d], 数値2=[%-5d]" % (30, 30))
数値1=[ 30], 数値2=[30 ]
・変換フラグに " " を指定した場合
>>> print("数値1=%d, 数値2=%d, 数値3=% d, 数値4=% d" % (30, -30, 30, -30))
数値1=30, 数値2=-30, 数値3= 30, 数値4=-30
・変換フラグに "+" を指定した場合
>>> print("数値1=%+d, 数値2=%+d" % (30, -30))
数値1=+30, 数値2=-30
■最小フィールド幅
最小フィールド幅も省略可能なオプションで、少なくとも確保される桁数を指定します。
>>> print("数値1=%d, 数値2=%4d, 数値3=%4d" % (30, 30, 72536))
数値1=30, 数値2= 30, 数値3=72536
>>> print("数値1=%d, 数値2=%*d" % (18, 5, 42))
数値1=18, 数値2= 42
>>>
■精度/精度長変換子
精度も省略可能なオプションで、小数部分の精度(桁数)を指定します
>>> print("数値1=%f, 数値2=%.3f" % (1/3, 1/3))
数値1=0.333333, 数値2=0.333
・なお精度に "*" を指定した場合
>>> print("数値1=%f, 数値2=%.*f" % (1/3, 3, 1/3))
数値1=0.333333, 数値2=0.333
>>>
※コメント投稿者のブログIDはブログ作成者のみに通知されます