# incoding=gbk
"""
字符串格式化代码:
%% 百分号标记
%b 无符号整数(二进制)
%c 字符及其ASCII码
%s 字符串
%d 有符号整数(十进制)
%o 无符号整数(八进制)
%x 无符号整数(十六进制)
%X 无符号整数(十六进制大写字符)
%e 浮点数字(科学计数法),默认保留6位小数
%E 浮点数字(科学计数法,用E代替e)
%f 浮点数字(用小数点符号),默认保留6位小数
%g 浮点数字(根据值的大小采用%e或%f),保留小数的位数总比%e或%f少1位
%G 浮点数字(类似于%g)
%n 数字。当值为整数时和'd'相同,值为浮点数时和'g'相同。不同的是它会根据区域设置
插入数字分隔符。
"""
print('{0:>10}'.format(12345678))
print('{0:>10b}'.format(123))
print('{0:>10c}'.format(123))
print('{0:>10s}'.format(str(123)))
print('{0:>10o}'.format(123))
print('{0:>10x}'.format(123))
print('{0:>10X}'.format(123))
print('{0:>10e}'.format(3.1415926))
print('{0:>10E}'.format(3.1415926))
print('{0:>10f}'.format(3.1415926))
print (format(3.1415926,'<10.2f'))
print('{0:>10.2f}'.format(3.1415926))
print('{0:>10.3g}'.format(3.1415926))
print('{0:>10.2G}'.format(3.1415926))
print('{0:>10n}'.format(301415926))
"""
可以指定所需长度的字符串的对齐方式:
< (默认)左对齐
> 右对齐
^ 中间对齐
"""
print ('1:\t|{0:>10},'.format('wangyu'))
print ('2:\t|{0:<10},'.format('wangyu'))
print ('3:\t|{0:^10},'.format('wangyu'))
print ('4:\t|{0:<10},{1:<15}'.format('wangyu',3.1415926))
print ('5:\t|User ID: {uid} Last seen: {last_login}'.format(uid='root',
last_login = '5 Mar 2008 07:20') )
#输入形式的控制format
a = 10
b = 2
print ('6:\t|%*.*f' % (a, b, 1.1415926))
print ('7:\t|{array[2]}'.format(array=range(10)))
print ('8:\t|{attr.__class__}'.format(attr=0))
print ('9:\t|{digit:*^ 10.5f}'.format(digit=1.0/3))
"""
格式化表达式的完整形式如下([ ]表示可选):
'%[(keyname)[flags][width][.precision]typecode' %(values)
使用keyname到values中的dictionary里面取对应的值
flags printf打印时使用的标志位,比如是否用0填充
width表示整个文本的宽度,precision表示小数位数
"""
msg = '%(qty)08.3f and %(food)s' %{'qty':3.1415926, 'food': 'spam'}
print(msg)