python中字符串格式化方式除了%还有更广泛的format方式,简单易用.本文除了介绍format基本用法,还有其简化方式.
基本用法
'hello,{0}'.format('world !') #引用第一个参数
输出'hello, world !'
'{} is cool!'.format('python') #引用第一个参数
输出'python is cool!'
'I\'m {name}'.format(name='Chris') #引用名为name的参数
输出'I'm Chris'
类型转换
'Hey,{name!a}'.format(name="克瑞斯") #!a把返回字符串中非ASCII编码的字符改为Unicode编码形式.
输出"Hey,'\\u514b\\u745e\\u65af'"
'Hey,{name!s}'.format(name="克瑞斯") #!r返回字符串为str函数下形式,用户易读.
输出'Hey,克瑞斯'
'Hey,{name!r}'.format(name="克瑞斯") #!r返回字符串为repr函数下形式,解释器易读.
输出"Hey,'克瑞斯'"
进制转换
:后传入#加进制符号表示转为相应进制数.
'{0} in HEX is {0:#x}'.format(16) #转为十六进制
输出'16 in HEX is 0x10'
'{0} in OCT is {0:#o}'.format(16) #转为八进制
输出'16 in OCT is 0o20'
对齐字符串
:后传入整数,可以保证该域至少有这么多的宽度. 用于美化表格时很有用.
在:与整数之间添加<、>、^,表示左对齐、右对齐、居中.
'{:10}'.format(100) #整型默认右对齐
输出' 100'
'{:<10}'.format(100) #左对齐
输出'100 '
'{:10}'.format('100') #字符串默认左对齐
输出'100 '
'{:_>10}'.format('100') #用_代替多余空间
输出'_______100'
截取字符串
'{:.3}'.format(1/3)' #可用于浮点数保留几位小数
输出'0.333'
'{:.3}'.format('Have a good day!')' #对于字符串截取前几位字符
输出'Hav'
时间格式化
from datetime import datetime
'{:%Y-%m-%d %H:%M}'.format(datetime(2018,5,30,15,00))
输出'2018-05-30 15:00'
参数指定格式
'{:{char}{align}{width}}'.format('test',char='_',align='^',width='10')
输出'___test___'
from datetime import datetime
dt=datetime(2018,5,30,15,0)
'{:{dfmt} {tfmt}}'.format(dt,dfmt='%Y-%m-%d',tfmt='%H:%M')
输出'2018-05-30 15:00'