格式化輸出(format)
1.基本用法
"hello {}".format("python") # 引用一個參數 傳字元串
# 輸出:hello python
"hello {}".format() # 傳數字
# 輸出:hello 1024
"hello {}".format([, , , ]) # 傳清單
# 輸出:hello [1, 2, 3, 4]
"hello {}".format((, , , )) # 傳元組
# 輸出:hello (1, 2, 3, 4)
"hello {}".format({"name": "chenkia", "age": }) # 傳字典
# 輸出:hello {'name': 'chenkia', 'age': 18}
"hello {}".format({"name", "chenkai", "name", "akai"}) # 傳集合
# 輸出:hello {'chenkai', 'akai', 'name'}
Python3.6版本之後的新寫法
str = python
print(f"hello {str}" ) # 引用一個變量
輸出:hello python
其它參數選項
字元串的參數使用{NUM}進行表示,0, 表示第一個參數,1, 表示第二個參數, 以後順次遞加;
使用”:”, 指定代表元素需要的操作, 如”:.3”小數點三位, “:8”占8個字元空間等;
還可以添加特定的字母, 如:
‘b’ - 二進制. 将數字以2為基數進行輸出.
‘c’ - 字元. 在列印之前将整數轉換成對應的Unicode字元串.
‘d’ - 十進制整數. 将數字以10為基數進行輸出.
‘o’ - 八進制. 将數字以8為基數進行輸出.
‘x’ - 十六進制. 将數字以16為基數進行輸出, 9以上的位數用小寫字母.
‘e’ - 幂符号. 用科學計數法列印數字, 用’e’表示幂.
‘g’ - 一般格式. 将數值以fixed-point格式輸出. 當數值特别大的時候, 用幂形式列印.
‘n’ - 數字. 當值為整數時和’d’相同, 值為浮點數時和’g’相同. 不同的是它會根據區域設定插入數字分隔符.
‘%’ - 百分數. 将數值乘以100然後以fixed-point(‘f’)格式列印, 值後面會有一個百分号.
2.傳入多個參數
"My name is {name}, I am {age} years old".format(name="chenkai", age=) # 别名替換
"My name is {0}, I am {1} years old".format("chenkai", )
"My name is {name}, I am {age} years old".format_map({"name": "chenkai", "age": })
# 輸出:"My name is chenkai, I am 18 years old"
3.進制轉換
"{0} in HEX is {0:#x}".format()
# 輸出:"16 in HEX is 0x10"
"{0} is OCT is {0:#o}".format()
# 輸出:"16 is OCT is 0o20"
4.對齊字元串
"{:>5}".format() # 設定寬度為5,右對齊(.rjust()方法)
"{:>5}".format()
"{:>5}".format()
"{:>5}".format()
# 輸出下面的結果
" 1"
" 10"
" 100"
" 1000"
'{:_<10}'.format('test') # 左對齊(.ljust()方法),并且指定"_"填充空白部分
# 輸出 'test______'
'{:_^10}'.format('test') # 居中對齊(.center()方法),并且指定"_"填充兩側
# 輸出 '___test___'
# 用%格式化字元串不支援居中對齊
5.截斷字元串
"{:.5}".format("Hello Python") # 截取前5個字元
# 輸出:"Hello"
6.通路對象屬性
class Pig(object):
def __init__(self, name, age, weight):
self.name = name
self.age = age
self.weight =weight
def __repr__(self):
return "Pig name={0}, age={1}".format(self.name, self.age)
pig = Pig("warrior", , )
print("{0} is {1} years old, {2} kilograms".format(pig.name, pig.age, pig.weight))
# 輸出:"warrior is 26 years old, 100 kilograms"
7.時間格式化
from datetime import datetime
'{:%Y-%m-%d %H:%M}'.format(datetime(, , , , ))
# 輸出 '2018-05-19 21:00'
8.傳入指定參數
"{:{char}{align}{width}}".format("test", char="_", align="^", width="10")
# 輸出 "___test___"
from datetime import datetime
dt = datetime(, , , , )
"{:{dfmt} {tfmt}}".format(dt, dfmt="%Y-%m-%d", tfmt="%H:%M")
# 輸出 "2018-05-24 21:00"