![Python从入门到项目实践(超值版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/265/27563265/b_27563265.jpg)
5.2 格式化字符串
在编写程序的过程中,经常需要进行格式化的输出,Python中提供了字符串格式化操作符%,非常类似C语言中的printf()函数的字符串的格式化(C语言中也使用%)。格式化字符串时,Python使用一个字符串作为一个模板,模板中有格式符,这些格式符为真实数值预留位置,并说明真实数值应该呈现的格式。
Python中常见的字符串格式化符号可以包含的类型见表5-1。
表5-1 格式符类型
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-T79_40115.jpg?sign=1739558990-gL7JlEj7T8mt5MWfPaJ0y0Tgks8W12j5-0-d1b9aa2941c7d21fde79f00e40a713b4)
通过“%”可以进行字符串的格式化,但是“%”经常会结合下面的操作辅助指令一起使用,如表5-2所示。
表5-2 操作辅助符
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-T80_78824.jpg?sign=1739558990-YcOpyQ6IF2X4UCuSOeItmLYUhWlKdlrJ-0-d1eee9952211d7bc01affadec1daeaaa)
5.2.1 格式化字符串符号的简单使用
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P80_40320.jpg?sign=1739558990-JDqgceSor9Fqn1yMmX74lnwRWWkooc7S-0-44e70df1bfa8012d0bead5327013336c)
下面一起通过对三个格式化字符串符号%s,%d,%f的简单使用,来看看格式化字符串符号的用法。
【例5-9】%s字符串的简单使用。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P80_78830.jpg?sign=1739558990-UVkp7HdYXhTCapclOq9hR1artF6Yya4X-0-c362c11dfadcc2d0029f35f7db6ba07d)
程序运行结果如图5-9所示。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P80_78825.jpg?sign=1739558990-CpZF6P5GDrZHXNzSxWGIXW46GA5PbFfz-0-d6327fa6a5ab52c620191795638d1c4f)
图5-9 %s使用结果
【例5-10】%d整数的简单使用。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P80_78829.jpg?sign=1739558990-hRRlVzQlC8rENvXgMH9iGMgieMYyMO6z-0-0c4e2af81e0c05839f7315efac44eb75)
程序运行结果如图5-10所示。
【例5-11】%f浮点数的简单使用。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P81_78833.jpg?sign=1739558990-9HJuW2Fo9Im5JR9PwCKEJWpBFY3fhZ19-0-f363669dca2a6c0fe5c06a9a726cb995)
程序运行结果如图5-11所示。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P81_40431.jpg?sign=1739558990-YPecC5YdSSlRmJzwcwo2KGG3G0lvaILP-0-30206bf3cf942a555bf7cd15793b28f1)
图5-10 %d使用结果
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P81_40434.jpg?sign=1739558990-zMTZnx2T2dSYXXxnTR8j7hU73jP5x3WO-0-d427d5f7198d973c83b6f0351ecff871)
图5-11 %f使用结果
5.2.2 字符宽度和精度
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P81_40487.jpg?sign=1739558990-F4hXqvtEnuhfsmEs25KxLq9WTZolizlq-0-c817698df6f3e90e141fed3480abcd82)
字符宽度:转换后的值所保留的最小字符个数。
精度:对于数字转换来说,结果中应包含的小数位数;对于字符串转换来说,转换后的值所能包含的最大字符个数。
表示格式:字符宽度、精度,若给出精度,则必须包含点号。
【例5-12】指定宽度。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P81_78836.jpg?sign=1739558990-Sbx6mbDNtc0IMQjAHPLTdjcJHW1jMcsO-0-ff636d391c3456cce0249187ddd7d84a)
程序运行结果如图5-12所示。
【例5-13】浮点数精度。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P81_78835.jpg?sign=1739558990-h6YdX7oW0KpCi9EMxUVwpomtItxP4ycP-0-76fee3e0765fc748216b073472ca2885)
程序运行结果如图5-13所示。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P81_40477.jpg?sign=1739558990-yaYMqYPNidn5HTjLi7zP2RxchcAazGzK-0-0ef8109c680f9bcb757d2ecf9bd42c7e)
图5-12 指定宽度结果
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P81_40480.jpg?sign=1739558990-UfqocUR5zeF4O8I2Jy3rX0tvw13LCLeT-0-53024c4704ad837952c0039d2ca44566)
图5-13 浮点数精度结果
5.2.3 对齐和用0填充
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P82_40584.jpg?sign=1739558990-XultsxYKyrcQCo6hEHeaRYH5zfYdFoEZ-0-cd2a905389dd10d54951c5fb4e2f1fa4)
字符串对齐有多种方法,这里介绍两种方法。
第一种:字符^、<、>分别是居中、左对齐、右对齐,后面带宽度。
【例5-14】使用字符^、<、>进行数据的对齐。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P82_78838.jpg?sign=1739558990-PqHF7YVStRoBOD9oQVTJFihny4PfZGpK-0-f8a3348ef853aa7492c845fd0d45556f)
程序运行结果如图5-14所示。
第二种:在Python中打印字符串时可以调用ljust(左对齐)、rjust(右对齐)和center(中间对齐)来输出整齐美观的字符串。
如果希望字符串的长度固定,给定的字符串又不够长度,可以通过rjust、ljust和center三个方法来给字符串补全空格。rjust为向右对齐,在左边补空格;ljust为向左对齐,在右边补空格;center为让字符串居中,在左右补空格。
【例5-15】调用ljust()、rjust()、center()函数进行数据的对齐。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P82_40521.jpg?sign=1739558990-QAgx9062QjCLdkgEo7SCEvyb5FsMvuQ7-0-495ac26fe36610ec3598792e3fc15d30)
程序运行结果如图5-15所示。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P82_40536.jpg?sign=1739558990-IeBkNM0Hh7pc3KbE0JGnHiFJ1yqNy3dV-0-eae52ba20850113067aa46563a4aa656)
图5-14 使用字符^、<、>对齐结果
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P82_40539.jpg?sign=1739558990-01cwfifEuaSIQy92BcfPqH8A8ipPa5Ba-0-e5343ab80935c6ed58682e4990dad758)
图5-15 调用函数对齐结果
同样,用0填充也有多种方法,下面介绍两种。
第一种,使用:号后面带填充的字符,只能是一个字符,若无指定则默认是用空格填充。
【例5-16】使用:号进行0填充。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P82_81356.jpg?sign=1739558990-d4mPYueGtw7MynivyvUZ3bEHzaEmZ3qu-0-9c73de2e4b24fea5f36e885126e5a50a)
程序运行结果如图5-16所示。
第二种:zfill()方法返回指定长度的字符串,原字符串右对齐,前面填充0。
zfill()方法语法:str.zfill(width)。参数width指定字符串的长度。原字符串右对齐,前面填充0。返回指定长度的字符串。
【例5-17】使用zfill()函数进行0填充。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P82_78841.jpg?sign=1739558990-dPGZ9Ji4B5NXFdBLum26wjKXnMeE6P15-0-924dd95fb0d7d9f0f63ce1ddc6d48e49)
程序运行结果如图5-17所示。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P82_40574.jpg?sign=1739558990-ERZ8iCxjwi9SchNH3EOfBDBSABNCb33o-0-800211c34b0ec9e613165d020b2ad9e0)
图5-16 使用:号进行0填充结果
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P82_40577.jpg?sign=1739558990-6ZhE1GfWMCMJaT4H4e5OLtIhOSEXyTkN-0-ecb5899335ea64a5f2f60b7f1a99ef7e)
图5-17 使用函数进行0填充结果