一、前言
Python的字符串格式化有两种方式:百分号方式 和 format方式
百分号的方式相对来说比较老, format方式则是相对比较先进,企图替换古老的方式,目前两者都支持。
二、百分号
%[(name)][flags][width].[precision]typecode
""" (name) 可选,用于选择指定的key flags 可选,可供选择的值有: + 右对齐;正数前加正好,负数前加负号; - 左对齐;正数前无符号,负数前加负号; 空格 右对齐;正数前加空格,负数前加负号; 0 右对齐;正数前无符号,负数前加负号;用0填充空白处 width 可选,占有宽度 .precision 可选,小数点后保留的位数 typecode 必选 s,获取传入对象的__str__方法的返回值,并将其格式化到指定位置 r,获取传入对象的__repr__方法的返回值,并将其格式化到指定位置 c,整数:将数字转换成其unicode对应的值,10进制范围为 0 <= i <= 1114111(py27则只支持0-255);字符:将字符添加到指定位置 o,将整数转换成 八 进制表示,并将其格式化到指定位置 x,将整数转换成十六进制表示,并将其格式化到指定位置 d,将整数、浮点数转换成 十 进制表示,并将其格式化到指定位置 e,将整数、浮点数转换成科学计数法,并将其格式化到指定位置(小写e) E,将整数、浮点数转换成科学计数法,并将其格式化到指定位置(大写E) f, 将整数、浮点数转换成浮点数表示,并将其格式化到指定位置(默认保留小数点后6位) F,同上 g,自动调整将整数、浮点数转换成 浮点型或科学计数法表示(超过6位数用科学计数法),并将其格式化到指定位置(如果是科学计数则是e;) G,自动调整将整数、浮点数转换成 浮点型或科学计数法表示(超过6位数用科学计数法),并将其格式化到指定位置(如果是科学计数则是E;) %,当字符串中存在格式化标志时,需要用 %%表示一个百分号 ""<i>本文来源gaodai$ma#com搞$代*码*网</i>"
2.1 通过位置传参
msg = "i am %s, my hobby is %s" % ("xu", 'conding') print(msg) # i am xu, my hobby is conding
%s打印数据类型
#可以打印数字, 列表, 字典 msg = "i am %s, my hobby is %s" % ("xu", 1) # i am xu, my hobby is 1 print(msg) msg = "i am %s, my hobby is %s" % ("xu", [1, 2]) # i am xu, my hobby is [1, 2] print(msg) msg = "i am %s, my hobby is %s" % ("xu", {"a": "a"}) # i am xu, my hobby is {'a': 'a'} print(msg)
打印浮点数
f = "percent %.2f" % 99.123456789 print(f) # percent 99.12
打印带百分号, %%
f = "percent %.2f%%" % 99.123456789 print(f) # percent 99.12%
2.2 通过关键字传参
msg = "i am %(name)s age %(age)d" % {"name": "xu", "age": 18} print(msg) # i an xu age 18
flags 和 width
flags:对齐
width: 占有宽度
# 右对齐 msg = "i am %(name)+10s age %(age)d" % {"name": "xu" , "age": 18} print(msg) # i am xu age 18 # 左对齐 msg = "i am %(name)-10s age %(age)d" % {"name": "xu" , "age": 18} print(msg) # i am xu age 18