天天看点

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