字符串的格式化是一种拼接字符串输出样式的手段,更灵活方便
join拼接只能使用分隔符,且要求被拼接的是可迭代对象
+拼接字符串还算方便,但是非字符串需要先转换为字符串才能拼接
在2.5版本之前,只能使用printf style风格的print输出(2.7之后基本不用,使用format函数)
printf-style formatting,来自于C语言的printf函数
格式要求:
占位符:使用%和格式字符组成,例如%s、%d等
s调用str(),r会调用repr()。所有对象都可以被这两个转换。
占位符中还可以插入修饰字符,例如%03d表示打印3个位置,不够前面补零
format % values,格式字符串和被格式的值之间使用%分隔
values只能是一个对象,或是一个和格式字符串占位符数目相等的元组,或一个字典
format函数
format函数格式字符串语法——Python鼓励使用
"{} {xxx}".format(*args, **kwargs) -> str
args是位置参数,是一个元组
kwargs是关键字参数,是一个字典
花括号表示占位符
{}表示按照顺序匹配位置参数,{n}表示取位置参数索引为n的值
{xxx}表示在关键字参数中搜索名称一致的
{{}}表示打印花括号
关键字参数或命名参数
"{server} {1}:{0}".format(8888, '192.168.1.100', server='Web Server Info : '),位置参数按照序号匹配,关键字参数按照名词匹配(关键字参数只能放在最后)
访问元素
"{0[0]}.{0[1]}".format(('magedu','com')) -->'magedu.com' 元组相当于一个元素,索引为0
coord =(3,5)
"X: {0[0]}; Y: {0[1]}".format(coord)--->'X: 3; Y: 5'
"X: {0}; Y:{0[1]}".format(coord)--->'X: (3, 5); Y:5'
"X: {}; Y: {}".format(coord[0],coord[1])---->'X: 3; Y: 5'
对象属性访问
from collections import namedtuple
Point = namedtuple('Point','x y')
p = Pint(4o,5)
"{{{0.x},{0.y}}}".format(p)--->"{4,5}"
"{{{},{}}}".format(p.x,p.y)--->"{4,5}"
octets = [192, 168, 0, 1]
{:02X}{:02X}{:02X}{:02X}'.format(*octets)
'C0A80001'
16进制
print("1->{} {}".format("hello","world")) #不设置指定位置,按默认顺序
print("2->{0} {1}".format("hello","world"))#设置指定位置
print("3->{1} {0}".format("hello","world"))#设置指定位置
print()
#参数为数字
{:.n}.format() 宽度,保留位数
{:.nf}.format() 设定小数点位数,只输出整数位时自动四舍五入
print("1->{0:.3f} {1:.1f} {2:.0f}".format(3.1415926,3.1415926,3.5415926)) #设定小数点位数,只输出整数位时自动四舍五入
print("2->{0:+.3f} {1:+.1f}".format(3.1415926,-3.1415926)) #设定输出数字符号
print("3->{0:.3f} {1:.1f}".format(3.1415926,3.1415926))#设定小数点位数
print("{}".format(3**0.5)) 3开平方-->1.7320508075688772
print("{:10f}".format(3**0.5)) 右对齐
print("{:.2f}".format(3**0.5)) 保留两个小数(小数点后两位)
print("{:.2}".format(3**0.5)) 宽度为2
print("{:5.2f}".format(3**0.5)) 宽度为5,保留两位小数
print("{:3.3%}".format(1/3))