Python3中字符串格式符详解
1.% 操作符,格式如下:
%[(name)][flags][width].[precision]typecode
(name) 为命名;
( flags) 可以有 +,-,’ ‘或 0。+ 表示右对齐。- 表示左对齐。’ ’ 为一个空格,表示在正数的左侧填充一个空格,从而与负数对齐。0 表示使用 0 填充;
(width)表示显示宽度;
(precision) 表示小数点后精度;
其中类型码如下:
符号 | 功能 |
---|---|
%s | 字符串 (采用str()的显示) |
%r | 字符串 (采用repr()的显示) |
%c | 单个字符 |
%d | 十进制整数 |
%i | 十进制整数 |
%o | 八进制整数 |
%x | 十六进制整数 |
%e | 指数 (基底写为e) |
%E | 指数 (基底写为E) |
%F | 浮点数,与上相同%g 指数(e)或浮点数 (根据显示长度) |
%G | 指数或浮点数 (根据显示长度) |
%% | 字符"%" |
%f | 浮点数 |
%f | 浮点数 |
下面进入举例环节:
print("%10.4f" % 4.3)
#(输出) 4.3000
# 第一个 % 后面的内容为格式说明,10 为显示宽度( 4.3000)不够的空格填充,
# 4为小数点位数,f为浮点数类型
# 第二个 % 后面为显示的内容来源。
print("%-10.4f" % 4.3)
#(输出)4.3000
# 第一个 % 后面的内容为格式说明:- 代表向左对齐,
#10 为显示宽度(4.3000 )不够的空格填充,
# 4为小数点位数,f为浮点数类型
# 第二个 % 后面为显示的内容来源。
print("%010.4f" % 4.3)
#(输出)00004.3000
# 第一个 % 后面的内容为格式说明:- 代表向左对齐,
#10 为显示宽度(00004.3000)不够的0填充,
# 4为小数点位数,f为浮点数类型
# 第二个 % 后面为显示的内容来源。
八进制、十进制、十六进制 之间
print("%+11x"% -12)
#(输出) -c
# 第一个 % 后面的内容为格式说明:+ 代表向右对齐,
#10 为显示宽度( -c)不够的空格填充,
# x为十六进制,
# 第二个 % 后面为显示的内容来源。
print("%15o"% 10)
#(输出) 12
# 第一个 % 后面的内容为格式说明:+ 代表向右对齐,
#10 为显示宽度( 12)不够的空格填充,
# o为八进制,
# 第二个 % 后面为显示的内容来源。
width, precision 为两个整数。我们可以利用" * " 带入
print("%10.*f" % (4, 4.3))
#(输出) 4.3000
# 第一个 % 后面的内容为格式说明:默认向右对齐,
#10 为显示宽度( 4.3000)不够的空格填充,
# * 为小数精度 4 小数点后四位
# 第二个 % 后面为(* 代表的precision 数值)和(显示的内容来源)。
常常出现场合:
%s 他的含义是“这里将被替换成一个新的字符串”,用作替换的内容放在字符串后面的%后面。
%d 含义是“这里将被替换成一个十进制的数”
%f 含义是“这里将被替换成一个浮点数”
num = 123
st = "who"
print("my name is %r ,编号 %d"%(st,num))
#(输出)my name is 'who' ,编号 123
num = 123
str = "who"
print("my name is %s ,编号 %d"%(str,num))
#(输出)my name is who ,编号 123
num = 123
str = "who"
float1 = 2.2
print("my name is %s ,编号 %d ,%.2f"%(str,num,float1))
#(输出)my name is who ,编号 123 ,2.20
2.format 格式化函数
基本语法是通过 {} 和 : 来代替以前的 %,增强了字符串格式化的功能。
format 函数可以接受不限个参数,位置可以不按顺序,但是只能少不能多(比参数的数量少,不能比参数的数量多)。所以更加的方便。
num = 123
str = "who"
float1 = 2.2
print("my name is {} ,编号 {} ,{}".format(str,num,float1))
#(输出)my name is who ,编号 123 ,2.2
下面介绍一下str.format() 格式化数字的多种方法:
举例 | 格式 | #(输出) | 功能 |
---|---|---|---|
print("{:.2f}".format(1.23456)) | { :.2f } | 1.23 | 保留小数点后两位 |
print("{:+.2f}".format(1.23456)) | {:+.2f} | +1.23 | 保留符号保留小数点后两位 |
print("{:+.2f}".format(-1.23456)) | { :.2f } | -1.23 | 保留符号保留小数点后两位 |
print("{:0>10}".format(-1.23456)) | {:0>10} | 00-1.23456 | 数字零填充不足的位置 (向左边填充, 宽度为10) |
print("{:.0f}".format(-1.23456)) | {:.0f} | -1 | 只保留整数部分 |
print("{:0<10}".format(-1.23456)) | {:0<10} | -1.2345600 | 数字零填充不足的位置 (向右边填充, 宽度为10) |
print("{:,}".format(123456)) | {:,} | 123,456 | 以逗号分隔的数字格式 |
print("{:.2%}".format(1.23456)) | {:.2%} | 123.46% | 百分比格式,会进行四舍五入 |
print("{:.2e}".format(1.23456)) | {:.2e} | 1.23e+00 | 指数记法 |
print("{:<10}".format(1.23456)) | {:<10} | 1.23456 | 空格填充不足的位置 (向左边填充, 宽度为10) |
print("{:^10}".format(1.23456)) | {:^10} | 1.23456 | 中间对齐,空格填充不足的位置 (宽度为10) |
print("{:b}".format(11)) | {:b} | 1011 | 二进制输出 |
print("{: o}".format(11)) | {: o} | 13 | 八进制输出 |
print("{:x}".format(11)) | {:x} | b | 十六进制输出 |
print("{:d}".format(11)) | {:d} | 11 | 十进制输出 |