Python-文字列フォーマット

4672 ワード

Pythonの文字列フォーマットには、パーセンテージ方式、format方式の2つの方法があります.
パーセンテージ方式は相対的に古いが、format方式は比較的先進的な方式であり、古い方式を置き換えようとしているが、現在は両者が共存している.[PEP-3101]
This PEP proposes a new system for built-in string formatting operations, intended as a replacement for the existing '%' string formatting operator.
1、パーセンテージ方式
%[(name)][flags][width].[precision]typecode
  • (name)オプションで、指定したkey
  • を選択できます.
  • flagsオプションで、次の値を選択できます.
  • +右揃え正数の前にちょうど、負数の前に負の記号をつける.
  • -左揃え正数の前に記号がなく、負数の前に負の記号をつける.
  • スペースを右揃えにします.正数の前にスペースを入れ、負数の前にマイナス記号をつける.
  • 0右揃え;正数の前に記号がなく、負数の前に負の記号をつける.空白
  • を0で埋める
  • widthオプション、占有幅
  • .precisionオプション、小数点以下に保持される桁数
  • typecode必須
  • s、受信オブジェクトの__を取得str__メソッドの戻り値を指定位置
  • にフォーマットする.
  • r、受信オブジェクトの__を取得するrepr__メソッドの戻り値を指定位置
  • にフォーマットする.
  • c、整数:数値をunicodeに対応する値に変換し、10進数範囲は0<=i<=1114111(py 27は0-255のみをサポート)である.文字:指定位置
  • に文字を追加
  • oは、整数を8進表現に変換する、指定位置
  • にフォーマットする.
  • xは、整数を16進数表示に変換し、指定位置
  • にフォーマットする.
  • d、整数、浮動小数点数を10進数表示に変換し、指定位置
  • にフォーマットする.
  • eは、整数、浮動小数点数を科学カウント法に変換し、指定位置(小文字e)
  • にフォーマットする.
  • Eは、整数、浮動小数点数を科学計数法に変換し、指定位置(大文字E)
  • にフォーマットする.
  • fは、整数、浮動小数点数を浮動小数点数表示に変換する、指定位置(デフォルトは小数点以下6桁保持)
  • にフォーマットする.
  • F、同
  • g、整数、浮動小数点数を浮動小数点型または科学カウント法で表すように自動調整(6桁を超える場合は科学カウント法)し、指定位置にフォーマットする(科学カウントであればe;
  • Gは、整数、浮動小数点数を浮動小数点型または科学計数法表示(6桁を超える場合は科学計数法)に自動調整し、指定位置にフォーマットする(科学計数であればE;
  • %で、文字列にフォーマットフラグが存在する場合、パーセント番号
  • を%%で表す必要があります.

    注:Pythonではパーセンテージフォーマットは、整数を自動的にバイナリ表現に変換する方法はありません
    一般的なフォーマット:
    tpl = "i am %s" % "alex"
     
    tpl = "i am %s age %d" % ("alex", 18)
     
    tpl = "i am %(name)s age %(age)d" % {"name": "alex", "age": 18}
     
    tpl = "percent %.2f" % 99.97623
     
    tpl = "i am %(pp).2f" % {"pp": 123.425556, }
     
    tpl = "i am %.2f %%" % {"pp": 123.425556, }
    

    2、Format方式
    [[fill]align][sign][#][0][width][,][.precision][type]
  • fill【オプション】空白に埋め込まれた文字
  • align【オプション】整列方式(widthに合わせて使用する必要があります)
  • >、コンテンツ右揃え(デフォルト)
  • =で、内容を右揃えにして、記号を入力文字の左側に配置し、数字タイプにのみ有効です.記号+フィラー+数字
  • でも
  • ^,コンテンツ中央
  • sign【オプション】符号の有無
  • +、正号プラス、負号マイナス;
  • -、正の番号は変わらず、負の番号は負を加えます.
  • スペース、正のスペース、負の番号に負を加えます.

  • #【オプション】バイナリ、8進数、16進数については、#を加えると0 b/0 o/0 x、そうでないと
  • は表示されません.
  • 、【オプション】数値に区切り記号を追加します.たとえば、1000000
  • width【オプション】フォーマットビットの幅
  • .precision【オプション】小数位保持精度
  • type【オプション】フォーマットタイプ
  • 入力「文字列タイプ」のパラメータ
  • s、フォーマット文字列タイプデータ
  • 空白、タイプが指定されていない場合、デフォルトはNone、同s
  • 入力「整数タイプ」のパラメータ
  • bは、10進数の整数を自動的に2進数表示に変換し、
  • をフォーマットする.
  • cは、10進数整数を対応するunicode文字
  • に自動的に変換する.
  • d、10進数整数
  • oは、10進数整数を自動的に8進数表現に変換してフォーマットする.
  • x、10進数整数を自動的に16進数表示に変換してフォーマット(小文字x)
  • X、10進数整数を自動的に16進数表示に変換してフォーマット(大文字X)
  • 「浮動小数点または小数点」のパラメータが入力されます.
  • eは、科学カウント法(小文字e)表示に変換され、フォーマットされる.
  • Eは、科学カウント法(大文字E)表現に変換され、フォーマットされる.
  • fは、浮動小数点型(デフォルト小数点以下6ビット保持)表示に変換してフォーマットします.
  • Fは、浮動小数点型(デフォルト小数点以下6桁保持)表示に変換され、フォーマットされます.
  • g、自動的にeとfで
  • を切り替える
  • G、EとFを自動的に切り替える
  • %、表示率(デフォルトは小数点以下6桁)


  • 一般的なフォーマット:
    tpl = "i am {}, age {}, {}".format("seven", 18, 'alex')
      
    tpl = "i am {}, age {}, {}".format(*["seven", 18, 'alex'])
      
    tpl = "i am {0}, age {1}, really {0}".format("seven", 18)
      
    tpl = "i am {0}, age {1}, really {0}".format(*["seven", 18])
      
    tpl = "i am {name}, age {age}, really {name}".format(name="seven", age=18)
      
    tpl = "i am {name}, age {age}, really {name}".format(**{"name": "seven", "age": 18})
      
    tpl = "i am {0[0]}, age {0[1]}, really {0[2]}".format([1, 2, 3], [11, 22, 33])
      
    tpl = "i am {:s}, age {:d}, money {:f}".format("seven", 18, 88888.1)
      
    tpl = "i am {:s}, age {:d}".format(*["seven", 18])
      
    tpl = "i am {name:s}, age {age:d}".format(name="seven", age=18)
      
    tpl = "i am {name:s}, age {age:d}".format(**{"name": "seven", "age": 18})
     
    tpl = "numbers: {:b},{:o},{:d},{:x},{:X}, {:%}".format(15, 15, 15, 15, 15, 15.87623, 2)
     
    tpl = "numbers: {:b},{:o},{:d},{:x},{:X}, {:%}".format(15, 15, 15, 15, 15, 15.87623, 2)
     
    tpl = "numbers: {0:b},{0:o},{0:d},{0:x},{0:X}, {0:%}".format(15)
     
    tpl = "numbers: {num:b},{num:o},{num:d},{num:x},{num:X}, {num:%}".format(num=15)