有些我们需要按照我们想要的格式进行输出,就会用到格式化输出,格式化输出的主要方法有两种:%的方法和format()方法。两者的区别在于对于简单的数据%的方式足够用了,format通过传入的参数进行格式化,对于复杂数据使用format功能更加强大。
一、%用法
1、整数的输出:
%o——oct 八进制
%d——dec 十进制
%x——hex 十六进制
>>print('%o' % 20)
24
>>print('%d' % 20)
20
>>print('%x' % 20)
14
2、浮点数输出:
%f——保留小数点后面六位有效数字
%.3f——保留小数点后面三位有效数字
%e——保留小数点后面六位有效数字,指数形式输出
%.3e——保留小数点后面三位有效数字,使用科学计数法
%g——在保证六位有效数字的前提下,使用小数方式,否则使用科学计数法
%.3g——在保证三位有效数字的前提下,使用小数方式,否则使用科学计数法
>>print('%f' % 1.11) #默认保留小数点后六位有效数字
1.110000
>>print('%.3f' % 1.11) #指定保留小数后三位有效数字
1.110
>>print('%e' % 1.11) #默认保留小数点后六位有效数字,用科学计数法
1.110000e+00
>>print('%.3e' % 1.11) #指定保留小数点后三位有效数字,用科学计数法
1.110e+00
>>print('%g' % 1111.1111) #默认保留六位有效数字,注意不是小数点后
1111.11
>>print('%.7g' % 1111.1111) #指定保留七位有效数字
1111.111
>>print('%.2' % 1111.1111) #指定保留两位有效数字,自动转换科学计数法
1.1e+03
3、字符串输出
%s
%10s——右对齐,占位符10位
%-10s——左对齐,占位符10位
%.2s——截取两位字符串
%10.2s——右对齐,占位符10位,截取两位字符串
%-10.2s——左对齐,占位符10位,截取两位字符串
>>print('%s' % 'hello world')
hello world
>>print('%20s' % 'hello world') #右对齐,取20位,不够补位
hello world
>>print('%-20' % 'hello world') #左对齐,取20位,不够补位
hello world
>>print('%.2s' % 'hello world') #截取两位
he
>>print('%10.2s' % 'hello world') #右对齐,截取两位,共取10位,不够补位
he
>>print('%-10.2s' % 'hello world') #左对齐,截取两位,共取10位,不够补位
he
4、其他
符号 | 说明 |
---|---|
%s | string字符串 |
%c | char字符 |
%d | 十进制 |
%i | 整数 |
%u | 无符号整数 |
%o | 八进制整数 |
%x | 十六进制整数 |
%X | 十六进制整数大写 |
%e | 浮点数科学计数法 |
%E | 浮点数科学计数法大写 |
%f | 浮点数小数点后6位 |
%g | 浮点数整体6位 |
%G | 浮点数整体6位大写 |
%% | 输出% |
转义字符 | 描述 |
---|---|
\(在行尾时) | 续行符 |
\\ | 反斜杠 \ 符号 |
\' | 单引号 ' |
\" | 双引号 " |
\a | 响铃(对没错电脑会响一声) |
\b | 退格(Backspace) |
\000 | 空 |
\n | 换行 |
\v | 纵向制表符 |
\t | 横向制表符 |
\r | 回车(本行开始,跟\n不同,最好自己试一下看效果) |
\f | 换页 |
\oyy | 八进制yy代表的字符(个人认为没什么卵用) |
\xyy | 十进制yy代表的字符(同上) |
\other | 其他的字符输出 |
二、format用法
1、不指定位置以及通过位置匹配
#不设置指定位置,不带任何字段
>>print('{} {}'.format('hello','world'))
hello world
#通过位置匹配
#设置指定位置输出,{}内是几就输出第几个元素
>>print('{0} {1}'.format('hello','world'))
hello world
>>print('{2} {0} {1}'.format('hello','world','python'))#可打乱顺序
python hello world
>>print('{1} {0} {1}'.format('hello','world'))#可重复
world hello world
2、通过关键字匹配
#通过关键字匹配
>>print('网站名:{name}, 网址:{url}'.format(name = '坑你点',url = 'www.kengni.com'))
网站名:坑你点, 网址:www.kengni.com
>>print('网址:{url}, 网站名:{name}'.format(name = '坑你点',url = 'www.kengni.com'))
网址:www.kengni.com, 网站名:坑你点
#通过字典进行匹配
#通过字典进行匹配时,{}内的值对应的字典的key,输出的值为字典的value
>>my_dictionary = {'name':'坑你点', 'url':'www.kengni.com'}
>>print('网站名:{name}, 网址:{url}'.format(**my_dictionary))#字典匹配时在字典前加**
网站名:坑你点, 网址:www.kengni.com
3、通过下标、key匹配
#通过列表下标匹配
>>my_list = ['坑你点','www.kengni.com','二狗']
>>print('网站名:{0[0]},网址:{0[1]}, 站长:{0[2]}'.format(my_list))#注意{0[0]}元素前的0是必须的,固定格式
网站名:坑你点, 网址:www.kengni.com, 站长:二狗
#通过元组下标匹配
>>my_suple = ('坑你点','www.kengni.com','二狗')
>>print('网站名:{0[0]}, 网址:{0[1]}, 站长:{0[2]}'.format(my_suple))
网站名:坑你点, 网址:www.kengni.com, 站长:二狗
#通过集合下标匹配。。。通过毛集合下标!集合TMD没下标!
#通过字典key匹配
>>my_dictionary = {'name':'坑你点','url':'www.kengni.com','owner':'二狗'}
>>print('网站名:{0[name]}, 网址:{0[url]}, 站长:{0[owner]}'.format(my_dictionary))
网站名:坑你点, 网址:www.kengni.com, 站长:二狗
当然,format还有很多其他的用法,但是不太常用,这里就先不做介绍了,以后有空在补吧!