format

python支持格式化字符串的输出。目前有两种方式:一种是类似于C语言的printf函数的方法。另一种是在python2.6版本后新增的str.format()函数。


第一种类似C语言风格的方式:

>>> print('My name is %s,age %d' % ('walter',24))
My name is walter,age 24

python字符串格式化符号:

符号 描述
%s 格式化字符串
%d 格式化整数
%u 格式化无符号整数
%o 格式化无符号八进制数
%x,%X 格式化无符号十六进制数
%f 格式化浮点数,可指定小数点后精度
%e,%E 用科学计数法格式化浮点数
%g,%G %f和%e的简写
%c 单个字符或整数转化为字符
%r 用repr()转化为字符串
%a 用ascii()转换为字符串
>>> print('My name is %c,age %o' % ('小',24))
My name is 小,age 30

>>> print('My name is %s,age %x' % ('小明',24))
My name is 小明,age 18

>>> print('My name is %s,age %e' % ('小明',24))
My name is 小明,age 2.400000e+01

>>> print('My name is %s,age %u' % ('小明',+24))
My name is 小明,age 24

>>> print('My name is %r,age %f' % ('小明',24))
My name is '小明',age 24.000000

>>> print('My name is %a,age %d' % ('小明',24))
My name is '\u5c0f\u660e',age 24

格式化操作符辅助指令:

符号 功能
num %d,%o,%x中间定义数字,以定义数字的宽度或者小数点精度
- 左对齐
+ 正负号
# 在八进制数前面显示'0o',在十六进制前面显示'0x'或者'0X'
0 显示的数字前面填充0,而不是默认的空格
%% 输出单一的%
m.n 最小总宽度m,小数点后的n倍数(只对%f生效)
>>> print('num is %10d' % (24))    #宽度为10的十进制,默认在左侧加空格
num is         24

>>> print('num is %-10d' % (24))   #左对齐
num is 24 

>>> print('num is %010d' % (24))   #宽度为10位,位数不足在前面补零
num is 0000000024

>>> print('num is %#d' % (24))     #以十进制显示,没有前缀
num is 24

>>> print('num is %#o' % (24))     #以八进制显示
num is 0o30

>>> print('num is %#x' % (24))     #以十六进制显示
num is 0x18

>>> print('num is %%%d' % (24))    #显示%号
num is %24

>>> print('num is %4.2f' % (123))  #小数点后的位置只有用在%f浮点数时才生效
num is 123.00


------------------------------------
**第二种format格式化函数:** 基本语法是通过`{}`和`:`来代替以前的`%`。 fortmat函数可以接受不限个参数,位置可以不按顺序。

format的括号里可以跟位置参数,也可以跟关键字参数

顺序对应
>>> 'my name is {},age {}'.format('walter',24)
my name is walter,age 24

>>> 'my name is {0},age {1}'.format('walter',24)
'my name is walter,age 24'

>>> 'my name is {1},age {0}'.format('walter',24)    #顺序可以调整
'my name is 24,age walter'

>>> 'my name is {name},age {age}'.format(name='walter',age=24)
'my name is walter,age 24'

可以在{}占位符中用字典和列表的下标操作,还可以用模块的子模块或子属性。

>>> import sys
>>> 'My {service[server]} runs on {sys.platform}'.format(sys=sys,service = {'server': 'jupyter'})
'My jupyter runs on linux'


>>> sitt = {'name':'walter','age':24}
>>> 'my name is {name},age {age}'.format(**sitt)  
'my name is walter,age 24'

>>> listt = ['walter',24]
>>> 'my name is {0[0]},age {0[1]}'.format(listt)
'my name is walter,age 24'
  • sys.platform :系统sys模块的platform函数
  • **sitt :位置参数

格式化操作符辅助指令:

符号 功能
^ 居中对齐

|右对齐,默认对齐方式
<|左对齐
:|后面带填充的字符,只能是一个字符,不指定则默认是用空格填充。相当于第一种的%号。
+|正数前显示
-|负数前显示
空格|在正数前加空格

>>> 'num is {:10d}'.format(100)     #默认右对齐
'num is        100'

>>> 'num is {:^10d}'.format(100)     #居中对齐
'num is    100    '

>>> 'num is {:<10d}'.format(100)     #左对齐
'num is 100       '

>>> 'num is {:010d}'.format(100)     #填充0
'num is 0000000100

>>> 'num is {:#^10d}'.format(100)    #可以使用多种填充字符,填充可以是特殊字符和字母
'num is ###100####'

>>> 'num is {:3.2f}'.format(22.333)  #浮点数
'num is 22.33'
posted @ 2019-02-22 08:59  dance_man  阅读(219)  评论(0编辑  收藏  举报