Python 提供了“%”对各种类型的数据进行格式化输出,例如如下代码:
price = 108
print ("the book's price is %s" % price)
上述程序中的打印函数包含以下三个部分。第一部分是格式字符串(相当于一个字符串模板),其中包含一个“%s”占位符,它将被第三部分所使用的变量或表达式的值替换;第二部分始终使用“%”作为分隔符。
格式字符串中的“%s”称为转换说明符(Conversion Specifier),它起着占位符的作用,它将被后面的变量或表达式的值所取代。 “%s”指定要使用 str() 函数将变量或值转换为字符串。
如果格式字符串包含多个“%s”占位符,则第三部分也应相应提供多个变量,并用括号将这些变量括起来。例如下面的代码:
user = "Charli"
age = 8
# 格式化字符串有两个占位符,第三部分提供2个变量
print("%s is a %s years old boy" % (user , age))
格式字符串中只能使用“%s”吗?还有其他转换说明符吗?如果“%s”只有一种形式,Python的格式化功能就太简单了。
实际上, Python 提供了如下所示的转换说明符:
转换说明符 | 说明 |
---|---|
%d,%i | 转换为带符号的十进制形式的整数 |
%o | 转换为带符号的八进制形式的整数 |
%x,%X | 转换为带符号的十六进制形式的整数 |
%e | 转化为科学计数法表示的浮点数(e 小写) |
%E | 转化为科学计数法表示的浮点数(E 大写) |
%f,%F | 转化为十进制形式的浮点数 |
%g | 智能选择使用 %f 或 %e 格式 |
%G | 智能选择使用 %F 或 %E 格式 |
%c | 格式化字符及其 ASCII 码 |
%r | 使用 repr() 将变量或表达式转换为字符串 |
%s | 使用 str() 将变量或表达式转换为字符串 |
当使用上面的转换说明符时,可指定转换后的最小宽度,例如如下代码:
num = -28
print("num is: %6i" % num)
print("num is: %6d" % num)
print("num is: %6o" % num)
print("num is: %6x" % num)
print("num is: %6X" % num)
print("num is: %6s" % num)
运行上面代码,可以看到如下输出结果:
num is: -28
num is: -28
num is: -34
num is: -1c
num is: -1C
num is: -28
从上面的输出可以看出,此时指定字符串的最小宽度为6,所以程序转换值时,总宽度为6,程序自动在值前加上三个空格。
默认情况下,转换后的字符串始终是右对齐的,如果宽度不够,会在左侧添加空格。 Python 还允许在最小宽度之前添加一个标志来更改此行为,Python 支持以下标志:
-:指定左对齐。
+:表示数值总要带着符号(正数带“+”,负数带“-”)。
0:表示不补充空格,而是补充 0。
例如如下代码
num2 = 30
# 最小宽度为0,左边补0
print("num2 is: %06d" % num2)
# 最小宽度为6,左边补0,总带上符号
print("num2 is: %+06d" % num2)
# 最小宽度为6,右对齐
print("num2 is: %-6d" % num2)
运行上面代码,可以看到如下输出结果:
num2 is: 000030
num2 is: +00030
num2 is: 30
对于浮点数的转换,Python 还允许指定小数点后的位数:如果转换字符串,Python 允许指定转换后的字符串中的字符数。这个标志叫做精度值,精度值放在最小宽度之后,用点()隔开。例如下面的代码:
my_value = 3.001415926535
# 最小宽度为8,小数点后保留3位
print("my_value is: %8.3f" % my_value)
# 最小宽度为8,小数点后保留3位,左边补0
print("my_value is: %08.3f" % my_value)
# 最小宽度为8,小数点后保留3位,左边补0,始终带符号
print("my_value is: %+08.3f" % my_value)
the_name = "Charlie"
# 只保留3个字符
print("the name is: %.3s" % the_name) # 输出Cha
# 只保留2个字符,最小宽度10
print("the name is: %10.2s" % the_name)
运行上面代码,可以看到如下输出结果:
my_value is: 3.001
my_value is: 0003.001
my_value is: +003.001
the name is: Cha
the name is: Ch
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ python2.x和3.x有什么区别09/07
- ♥ java写的接口能不能调用python10/11
- ♥ Python判断是否为函数09/28
- ♥ python中如何掌握闭包的使用?01/11
- ♥ Python如何实现字符串排序08/20
- ♥ 如何安装指定版本的python包09/04
内容反馈