![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=1739678723-MbvcuKJ7YgZqvRYdDIoJRmpCxrB6OWqN-0-013b46ca91ededc3df4065bf1c62c78e)
通过“%”可以进行字符串的格式化,但是“%”经常会结合下面的操作辅助指令一起使用,如表5-2所示。
表5-2 操作辅助符
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-T80_78824.jpg?sign=1739678723-4S8c4ETrLyl1PEjEnVrx9EgkTco2EGdy-0-0b16815a8f8cc32a8d8230e8785e8294)
5.2.1 格式化字符串符号的简单使用
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P80_40320.jpg?sign=1739678723-cu3AMG89fhAlaudLyN8nxE0o4PH2Bgtz-0-63c70333860a673daad00a9e802dd6c7)
下面一起通过对三个格式化字符串符号%s,%d,%f的简单使用,来看看格式化字符串符号的用法。
【例5-9】%s字符串的简单使用。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P80_78830.jpg?sign=1739678723-yUWjA6pvsiHXrqp47pVrT4BTPAUni404-0-90dd42b9e36eb706cd59ddc5ae2106e8)
程序运行结果如图5-9所示。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P80_78825.jpg?sign=1739678723-FZmGDuaDVuwOv1NbPRFhnnSW3jErnGBv-0-6e684fcf2b1c26e599bbcab3263b4614)
图5-9 %s使用结果
【例5-10】%d整数的简单使用。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P80_78829.jpg?sign=1739678723-NMUeRNB2IrAKWdkJpH5eX8oC98DUwh8O-0-58a6618e2fa7069b8c07ebe8aeca1f4b)
程序运行结果如图5-10所示。
【例5-11】%f浮点数的简单使用。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P81_78833.jpg?sign=1739678723-sjA3LelrVpB3TSNqz02CZcJ9y9GgTNdK-0-cd464b1574c546e757ed8daba332f336)
程序运行结果如图5-11所示。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P81_40431.jpg?sign=1739678723-vWT8cU5lJrlZ6F5dQSJdAfuDvnLBu1yM-0-4cf69dcbb2290b3483ed3c0f4a28ddd7)
图5-10 %d使用结果
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P81_40434.jpg?sign=1739678723-U2sFA13hUCghxGyIZXGrke64pu7FV1iX-0-ef4d0c6d14f73c13d895b24b24f6c11c)
图5-11 %f使用结果
5.2.2 字符宽度和精度
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P81_40487.jpg?sign=1739678723-BRgdxbe20kxsP61g4H3k6C6Ta9y9xQOR-0-b1b8865b9116aa655883bd7d6b7d1304)
字符宽度:转换后的值所保留的最小字符个数。
精度:对于数字转换来说,结果中应包含的小数位数;对于字符串转换来说,转换后的值所能包含的最大字符个数。
表示格式:字符宽度、精度,若给出精度,则必须包含点号。
【例5-12】指定宽度。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P81_78836.jpg?sign=1739678723-PAybnay4LH9Biu73upM5CQSXMwLBeMHh-0-7c8aa1b725a5afba97b7632d5538cf5a)
程序运行结果如图5-12所示。
【例5-13】浮点数精度。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P81_78835.jpg?sign=1739678723-XcpZl6kIZqrj81sMhqbsp1pG0Kjaeu3Z-0-d64feb8449d718c4c3058ee5d6aea4e4)
程序运行结果如图5-13所示。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P81_40477.jpg?sign=1739678723-KtduFjGJU7LsgB1H38cwCqZhHagFri5j-0-3c02b9c082e9e85911e80b9291d7c313)
图5-12 指定宽度结果
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P81_40480.jpg?sign=1739678723-muLopg1qCyo8y83QpVOeWTN0RDLnHF06-0-211db17a49d8c419d76aa7dc93b17083)
图5-13 浮点数精度结果
5.2.3 对齐和用0填充
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P82_40584.jpg?sign=1739678723-KeRHjZaymscxKbWNFFUOuJ3mYAZW5VES-0-b842e5ef497492910df0867e506327d0)
字符串对齐有多种方法,这里介绍两种方法。
第一种:字符^、<、>分别是居中、左对齐、右对齐,后面带宽度。
【例5-14】使用字符^、<、>进行数据的对齐。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P82_78838.jpg?sign=1739678723-QtJGC4r53gPWFKhRDzwDUpU3PRtAmx3o-0-c3ff44bb3c974abe98d8cd515fc07362)
程序运行结果如图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=1739678723-53U40hxw7gdHNy4Ne2tOqYOROz4URUm9-0-dcf58e662e7b5222da1763d08619bbb5)
程序运行结果如图5-15所示。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P82_40536.jpg?sign=1739678723-kcXmojO22Lw7xxIiFQPuij6vLFuLPIQQ-0-5ff8395fd093ea93b069459acbf71348)
图5-14 使用字符^、<、>对齐结果
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P82_40539.jpg?sign=1739678723-2uBvZbf2IZEBRYGXSCrbg7efBJUWcly5-0-9d77e833ad5022f5ebe0883aca8d58ef)
图5-15 调用函数对齐结果
同样,用0填充也有多种方法,下面介绍两种。
第一种,使用:号后面带填充的字符,只能是一个字符,若无指定则默认是用空格填充。
【例5-16】使用:号进行0填充。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P82_81356.jpg?sign=1739678723-4gzF55tz5yTtRC6BTe2PVuimzVWYFZy4-0-dd971f438418274479873d27e9fdcc03)
程序运行结果如图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=1739678723-yF7SkUsFb8CX5jrfW8DbnJkQfzvHZXiI-0-468ce22feb7dff3bb07ee92aca4404d4)
程序运行结果如图5-17所示。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P82_40574.jpg?sign=1739678723-2psvyxFWp9QHWUZpDxpzNcm9tEOlVtqk-0-cb00138f022654bb2aab5feea7c04550)
图5-16 使用:号进行0填充结果
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P82_40577.jpg?sign=1739678723-n3uefTMm5hfrO8gppWHPfvAeCxIB9Oce-0-f05caaf6dcdf667aad1d13ca8fa5d7de)
图5-17 使用函数进行0填充结果