概念:字符串格式化是对字符串的输出形式进行控制,使其按照开发者期望的方式输出。
进行字符串格式化的方式有三种,分别为:符号格式化,函数格式化,字典格式化。
符号格式化
符号格式化主要是使用“%+格式化符号”,及相应的格式化辅助符号的方式对字符串进行格式化。
示例:常用的字符串格式化符号
字符串格式化符号 | |
格式化符号 | 说明 |
%c | 转换成字符(ASCII码值,或者长度唯一的字符串) |
%r | 优先用repr()函数进行字符串转换 |
%s | 优先用str()函数进行字符串转换 |
%d / %i | 转成有符号十进制数 |
%u | 转成无符号十进制数 |
%o | 转成无符号八进制数 |
示例:
print("%c,%c" % (65, 97))
s = 'podjsd'
print("%s" % (s))
print('%r'%42)
print('%e'%200.21)
print('%g'%200.21)
print('%%'%())
输出结果:
A,a
podjsd
42
2.002100e+02
200.21
%
字符串格式化符号 | |
格式化符号 | 说明 |
%x / %X | 转成无符号十六进制数(x / X 代表转换后的十六进制字符的大小写) |
%e / %E | 转成科学计数法(e / E 控制输出e / E) |
%f / %F | 转成浮点数(小数部分自然截断) |
%g / %G | %e和%f / %E和%F的简写 |
%% | 输出%(格式化字符串里面包括百分号,那么必须使用%%) |
示例:常用格式化辅助符号
格式化辅助符号 | |
辅助符号 | 说明 |
* | 定义宽度或小数点精度 |
- | 用做左对齐 |
+ | 在正数面前显示加号(+) |
# | 在八进制数前面显示零(0),在十六进制前面显示“0x”或者“0X”(取决于用的是“x”还是“X”) |
0 | 显示的数字前面填充“0”而不是默认的空格 |
(var) | 映射变量(通常用来处理字段类型的参数) |
m.n | m是显示最小的总宽度,n是小数点后的位数(如果可用的话) |
print('%5.2f'%(3.4))
print('%+d'%(4))
输出结果:
3.40
+4
函数格式化
format()方法对字符串进行格式化操作,format()方法常用的匹配方法有三种:
1.不带编号,即“{}”;
2.带数字编号,可调换顺序,如“{0}”、“{1}”等;
3.带关键字,如“{name}”、“{age}”等。
示例:
print("a={},b={}".format(2, 4))
print("a={0},b={1}".format(2, 4))
print("a={1},b={0}".format(2, 4))
print("a={num2},b={num3}".format(num2=2, num3=4))
print("a={num3},b={num2}".format(num2=2, num3=4))
输出结果:
a=2,b=4
a=2,b=4
a=4,b=2
a=2,b=4
a=4,b=2
示例:常用的格式化输出形式。
常用数字化格式化案例 | |||
数字 | 格式 | 输出 | 描述 |
3.1415926 | {:.2f} | 3.14 | 保留小数点后俩位 |
3.1415926 | {:+.2f} | +3.14 | 带符号保留小数点后俩位 |
-1 | {:+.2f} | -1.00 | 带符号保留小数点后俩位 |
2.71828 | {:.0f} | 3 | 不带小数 |
5 | {:0>2d} | 05 | 数字补零(填充左边,宽度为2) |
5 | {:x<4d} | 5xxx | 数字补x(填充右边,宽度为4) |
10 | {:x<4d} | 10xx | 数字补x(填充右边,宽度为4) |
1000000 | {:,} | 1,000,000 | 以逗号分隔的数字形式 |
0.25 | {:.2%} | 25.00% | 百分比格式 |
1000000000 | {:.2e} | 1.00e+09 | 指数记法 |
13 | {:10d} | 13 | 右对齐(默认,宽度为10) |
13 | {:<10d} | 13 | 左对齐(宽度为10) |
13 | {:^10d} | 13 | 中间对齐(宽度为10) |
3.1415926 | {:.2f} | 3.14 | 保留小数点后2位 |
字典格式化
在Python语言中,字典格式化是在左边的格式化字符串通过引用右边字典中的键来提取对应的值,实现格式化输出。
print("%(name)s,%(age)s" % {"name": "hupo", "age": 18})
输出结果:
hupo,18
注意:括号外的s:“%(name)s,%(age)s”