天天看點

python0o1010_python格式化:%和format

%方法:

%[(name)][flags][width][.precision]typecode

· (name):可選,用于選擇指定的key

· flags:可選,可供選擇的值有:

· +:右對齊,正數前加正号,負數前加負号

· -:左對齊,正數前無符号,負數前加負号

· 空格:右對齊,正數前加空格,負數前加負号

· 0: 右對齊,正數前無符号,負數前加負号,用0填充空白處

· width:可選,表示占有寬度

· .precision:可選,表示小數點後保留的位數

· typecode:必選

· s:擷取傳入對象的__str__方法的傳回值,并将其格式化到指定的位置

· r:擷取傳入對象的__repr__方法的傳回值,并将其格式化到指定位置

· c:整數:将數字轉換成其unicode對應的值,10進制範圍為0≤i≤1114111(py2.7隻支援0~255);字元:将字元添加到指定位置

· o:将整數轉換成八進制,并将其格式化到指定位置

· x:将整數、浮點數轉換成十六進制,并将其格式化到指定位置

· d:将整數、浮點轉換成十進制,并将其格式化到指定位置

· e:将整數、浮點數轉換成科學記數法,并将其格式化到指定位置

· E:将整數、浮點數轉換成科學記數法,并将其格式化到指定位置

· f:将整數、浮點數轉換成浮點數,并将其格式化到指定位置

· F:将整數、浮點數轉換成浮點數,并将其格式化到指定位置

· g:自動調整将整數、浮點數轉換成浮點數或科學記數法(超過6位用科學記數法)

· G:自動調整将整數、浮點數轉換成浮點數或可續記數法(超過6位用科學記數法)

· %:當字元串中存在格式化标志時,需要用%表示(轉義)一個百分号(Python中百分号不是自動将整數轉換成二進制而方式)

一些奇怪條件

填充的内容就是不能是元組

執行個體

a='output a number:%10.3f'%2.2333

print(a)

a='output a number:%-10.3f'%2.2333

print(a)

a='output a number:%010.3f'%2.2333

print(a)

a='output a str:%s'%'guess what'

print(a)

輸出:

output a number: 2.233

output a number:2.233

output a number:000002.233

output a str:guess what

format方法

①預設操作:

print('{}正在看着{}'.format('桶','頭罩'))

print('{}正在看着{}'.format('桶',''))

print('{}正在看着{}'.format('桶'))

輸出結果:

桶正在看着頭罩

桶正在看着

Traceback (most recent call last):

File "C:\Users\ASUS\Desktop\hey.py", line 3, in

print('{}正在看着{}'.format('桶'))

IndexError: Replacement index 1 out of range for positional args tuple

#出錯惹!↑要兩個空都有東西,沒有也得意思意思填上

注意:此間的參數是按順序進行替換的,順序一定要對

②位置參數

執行個體:

print('{0}正在看着{1}'.format('桶','頭罩'))

print('{1}正在看着{0}'.format('桶','頭罩'))

輸出結果:

桶正在看着頭罩

頭罩正在看着桶

③關鍵字參數

執行個體:

print('{a}正在看着{b}'.format(a='桶',b='頭罩'))

print('{a}正在看着{b}'.format(b='頭罩',a='桶'))

#參數之間位置交換是可以的,反正已經指向了确定的參數

輸出結果:

桶正在看着頭罩

桶正在看着頭罩

注意:位置方法和關鍵字方法可以混用,但關鍵字一定不能擾亂位置的順序(即位置在前,關鍵字在後)

print('{a}正在看着{0}的{b}'.format('戰損',a='桶',b='頭罩'))

print('{a}正在看着{0}的{b}'.format(a='桶','戰損',b='頭罩'))

輸出

桶正在看着戰損的頭罩

#第二行報錯

④清單替換

執行個體

a=['戰損','桶','頭罩']

print('{ls[1]}正在看着{ls[0]}的{ls[2]}'.format(ls=a))

輸出結果:

桶正在看着戰損的頭罩

存疑:為什麼需要ls=a????

解釋:a是别名,需要把它和真名等同起來??

填充

1、冒号做為指令的開始,後面跟不同的指令,具體順序如下:填充符号、對齊方式(> 右對齊,< 左對齊,^ 居中對齊)、寬度、進制

print('{:*>5}'.format(233))

print('{:0>5}'.format('hey'))

**233

00hey

2、進制輸出 b、d、o、x分别是二進制、十進制、八進制、十六進制。

print('{:*<8b}'.format(10))

1010****

3、浮點型的精度

print('{:.2f}'.format(3.1415))

3.14

原文連結:https://blog.csdn.net/GreatRedRabbit/article/details/105289289