Python format フォーマット関数
Python2.6 から、文字列をフォーマットする新しい関数が追加されました。str.format()、それは文字列のフォーマット機能を強化しました。
基本的な構文は{}と:以前のものを置き換えるために% 。
format 関数は引数をいくつでも受け取ることができ、位置は順序どおりでなくても構いません。
例
>>>"{} {}".format("hello", "world") # 指定位置を設定せず、デフォルトの順序で
'hello world'
>>> "{0} {1}".format("hello", "world") # 指定位置を設定する
'hello world'
>>> "{1} {0} {1}".format("hello", "world") # 指定位置を設定する
'world hello world'
引数を設定することもできます:
例
#!/usr/bin/python
# -*- coding: UTF-8 -*-
print("サイト名:{name}, アドレス {url}".format(name="初心者向けチュートリアル", url="www.example.com"))
# 辞書を使って引数を設定する
site = {"name": "初心者向けチュートリアル", "url": "www.example.com"}
print("サイト名:{name}, アドレス {url}".format(**site))
# リストのインデックスで引数を設定する
my_list = ['初心者向けチュートリアル', 'www.example.com']
print("サイト名:{0".format(my_list)) # 「0」は必須です
出力結果は次のとおりです:
网站名:サンプル, 地址 www.example.com 网站名:サンプル, 地址 www.example.com 网站名:サンプル, 地址 www.example.com
また、str.format()オブジェクトを渡す:
例
#!/usr/bin/python
# -*- coding: UTF-8 -*-
class AssignValue(object):
def __init__(self, value):
self.value = value
my_value = AssignValue(6)
print('value は: {0.value}'.format(my_value)) # 「0」は省略可能です
出力結果は次のとおりです:
value 为: 6
数値のフォーマット
以下の表は、str.format() で数値をフォーマットするさまざまな方法を示しています:
>>> print("{:.2f}".format(3.1415926))
3.14
| 数値 | 書式 | 出力 | 説明 |
|---|---|---|---|
| 3.1415926 | {:.2f} | 3.14 | 小数点以下2桁を残す |
| 3.1415926 | {:+.2f} | +3.14 | 符号付きで小数点以下2桁を残す |
| -1 | {:-.2f} | -1.00 | 符号付きで小数点以下2桁を残す |
| 2.71828 | {:.0f} | 3 | 小数なし |
| 5 | {:0>2d} | 05 | ゼロ埋め (左側を埋める、幅2) |
| 5 | {:x<4d} | 5xxx | x 埋め (右側を埋める、幅4) |
| 10 | {:x<4d} | 10xx | x 埋め (右側を埋める、幅4) |
| 1000000 | {:,} | 1,000,000 | カンマ区切りの数値形式 |
| 0.25 | {:.2%} | 25.00% | パーセント形式 |
| 1000000000 | {:.2e} | 1.00e+09 | 指数表記 |
| 13 | {:>10d} | 13 | 右揃え (デフォルト、幅10) |
| 13 | {:<10d} | 13 | 左揃え (幅10) |
| 13 | {:^10d} | 13 | 中央揃え (幅10) |
| 11 | '{:b}'.format(11)
'{:d}'.format(11)
'{:o}'.format(11)
'{:x}'.format(11)
'{:#x}'.format(11)
'{:#X}'.format(11) |
1011 11 13 b 0xb 0XB |
進数 |
^, <, >それぞれ中央揃え、左揃え、右揃えで、後ろに幅を指定します。:記号の後ろに埋め文字を指定します。1文字のみ使用でき、指定しない場合はデフォルトでスペースで埋められます。
+正の数の前に表示することを表します+、負の数の前には負号を表示します-; (スペース)は正の数の前にスペースを追加することを表します
b、d、o、x はそれぞれ2進数、10進数、8進数、16進数です。
さらに、中括弧を使用して{}中括弧をエスケープするには、次の例のとおりです:
例
#!/usr/bin/python
# -*- coding: UTF-8 -*-
print ("{} に対応する位置は {{0}} です".format("サンプル"))
出力結果は次のとおりです:
サンプル 对应的位置是 {0}
その他の拡張
Python 文字列