字符串格式
python提供%对各类型的数据进行格式化输出。
>>> price = 108 >>> print("the book's price is %s" % price) the book's price is 108
print函数包含三部分,第一部分格式化字符串(它相当于字符串模板),该格式化字符串中包含一个%s占位符,它会被第三部分的变量或表达式的值代替,第二部分固定使用%作为分隔符。
格式化字符串中的%s被称为转换说明符(conversion specifier),其作用相当于一个占们符,它会被后面的变量或表达式的值代替。%s指定将变量或值使用str()函数转换为字符串。
如果格式化中包含多个%s占位符,第三部分也应该对应地提供多个变量,并且使用圆括号将这些变量括起来,
>>> user = 'charli' >>> age = 8 >>> print("%s is a %s year old boy" % (user , age)) charli is a 8 year old boy
>>> num = 28 >>> print("num is: %6i" % num) num is: 28 >>> print("num is: %6d" % num) num is: 28 >>> print("num is: %6x" % num) num is: 1c >>> print("num is: %6o" % num) num is: 34 >>> print("num is: %6X" % num) num is: 1C >>> print("num is: %6s" % num) num is: 28
从输出结果可以看出,此时指定了字符串最小宽度为6,因此程序转换数值时总宽度为6,程序自动在数值前面补充了三个空格。默认情况下不够宽度时左边用空格补充。python也允许在最小宽度前添加一个标志来改变这种行为,支持的标志如下。
- -:指定左对齐
- +:表示数值总要带着符号(正数带+,负数带-)
- 0:表示不补充空格,而是补充0
>>> num2 = 30 >>> print("num2 is: %06d" % num2) #最小宽度为0,左边补0 num2 is: 000030 >>> print("num2 is: %+06d" % num2) #最小宽度为6,左边补0,总是带上符号 num2 is: +00030 >>> print("num2 is: %-06d" % num2) #最小宽度为6,左边对齐。 num2 is: 30
对于转换浮点数python还允许指定小数点后的数字位数,如果转换的是字符串,python允许指定转换后的字符串的最大字符数。这个标志被称为精度值,该精度值被放在最小宽度之后,中间用(.)隔开,
>>> my_value = 3.001415926535 >>> print("my_value is: %8.3f" % my_value) #最小宽度为8小数点后面保留3位。 my_value is: 3.001 >>> print("my_value is: %08.3f" % my_value) #最小宽度为8小数点后面保留3位,左边补0 my_value is: 0003.001 >>> print("my_value is: %+08.3f" % my_value) #最小宽度为8小数点后面保留3位,左边补0,始终带符号 my_value is: +003.001
>>> the_name = 'charlie' >>> print("the_name is: %.3s" % the_name) #只保留3个字符。 the_name is: cha >>> print("the_name is: %10.2s" % the_name) #只保留2个字符,最小宽度为10 the_name is: ch