![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=1739280678-nCZ1yFRDfMQ2FpobZewhWmZ4Pdc5j4vb-0-bbca7064e9feed3f3808f1e131412865)
通过“%”可以进行字符串的格式化,但是“%”经常会结合下面的操作辅助指令一起使用,如表5-2所示。
表5-2 操作辅助符
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-T80_78824.jpg?sign=1739280678-jygID5ThHNpP5wVgmxxqObxdgrwtdGTI-0-3fb82278a0b0cdd6db5fab6821985f37)
5.2.1 格式化字符串符号的简单使用
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P80_40320.jpg?sign=1739280678-vfQZQO0d8vWBzQ6VgNGR3VN9Dr7cxTm7-0-35069efe69371f4f2b738d8fea7d5f9d)
下面一起通过对三个格式化字符串符号%s,%d,%f的简单使用,来看看格式化字符串符号的用法。
【例5-9】%s字符串的简单使用。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P80_78830.jpg?sign=1739280678-yOFsrSkOjllFHKHsmFnF33bBYEaKuFA8-0-bdb000d823f65a597d23ad89b97203cd)
程序运行结果如图5-9所示。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P80_78825.jpg?sign=1739280678-HDNUMw9nBXDsuNRkGmhPJzLvSpsJiIhW-0-2ba1f17099811d59552ce3d117c70ddf)
图5-9 %s使用结果
【例5-10】%d整数的简单使用。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P80_78829.jpg?sign=1739280678-49W46HqbU5kQlL7Uc8KJEqzbB8DysXxh-0-345dc33ff6a8b670f8769a72647cc95f)
程序运行结果如图5-10所示。
【例5-11】%f浮点数的简单使用。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P81_78833.jpg?sign=1739280678-vbhiKLCPK6zHlWnPuUAZGt2Te1UgqMXn-0-2dc8f32c8dff0a3576a7f722d76192ca)
程序运行结果如图5-11所示。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P81_40431.jpg?sign=1739280678-UEbJEC6ptZplEkLRnfPRAc1TwnULECQu-0-d7acc659ede7ab92c63f9e71282a5a89)
图5-10 %d使用结果
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P81_40434.jpg?sign=1739280678-0vw2tLZUeNagAQiztXwpo5lP3JIUqZNJ-0-52b1d5f2ff04f54b862267e6f73599ef)
图5-11 %f使用结果
5.2.2 字符宽度和精度
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P81_40487.jpg?sign=1739280678-cd2HHolaAAoh1ZrxteHlzb6xf9XQBatv-0-4c7ab54500e2b6ee8e012321281538de)
字符宽度:转换后的值所保留的最小字符个数。
精度:对于数字转换来说,结果中应包含的小数位数;对于字符串转换来说,转换后的值所能包含的最大字符个数。
表示格式:字符宽度、精度,若给出精度,则必须包含点号。
【例5-12】指定宽度。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P81_78836.jpg?sign=1739280678-MX0P1tP95Zb0XeNi5EycV8OW9Fs6LMKd-0-12358603b2f0224ad97494c78f8830f4)
程序运行结果如图5-12所示。
【例5-13】浮点数精度。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P81_78835.jpg?sign=1739280678-ix0VZE7Nk0sQjBxHlkQZjzQzdHDWLwLh-0-d7d210f9df33f3cd0001d1aa86bfe9af)
程序运行结果如图5-13所示。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P81_40477.jpg?sign=1739280678-dgBOlHobVN4NmFv4etqJbTqz4aXxl7pX-0-1329e021a1ed5ac1386620d9a4a54770)
图5-12 指定宽度结果
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P81_40480.jpg?sign=1739280678-DOy6XbxZdcCvNtNMEKhbx2VqhHN9PY4B-0-ac65845c4110f2c0574a53d4dfbad4a1)
图5-13 浮点数精度结果
5.2.3 对齐和用0填充
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P82_40584.jpg?sign=1739280678-mN2iRZJFULoISW6p6EiuO01eQCcCkDOm-0-02311702c10bff9c1cbea865ee0711b0)
字符串对齐有多种方法,这里介绍两种方法。
第一种:字符^、<、>分别是居中、左对齐、右对齐,后面带宽度。
【例5-14】使用字符^、<、>进行数据的对齐。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P82_78838.jpg?sign=1739280678-AqdbD0JmFRiQVoZqRlpujQRWPN44r7VJ-0-908643b810b9aaeab1e401e08c4a722e)
程序运行结果如图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=1739280678-ElDDuqKUx8dfFIp8t2t5SL0GAgCpO8jf-0-d67140ee5b003b1bd1a24a428c68f78d)
程序运行结果如图5-15所示。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P82_40536.jpg?sign=1739280678-84lQSglcwaaGUdcB8eljZT0is9FxSaDk-0-a5e7a521d0c87a32d900a56e5028ffd8)
图5-14 使用字符^、<、>对齐结果
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P82_40539.jpg?sign=1739280678-AXNP2HAoRMZ03ZhRtsUUlMVgKuEe1ieC-0-c658f604fa27ae401a4c0dbe6df6ddf4)
图5-15 调用函数对齐结果
同样,用0填充也有多种方法,下面介绍两种。
第一种,使用:号后面带填充的字符,只能是一个字符,若无指定则默认是用空格填充。
【例5-16】使用:号进行0填充。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P82_81356.jpg?sign=1739280678-DrdKdijkvzBONFe75bHFlXC6kxGFVbuO-0-810a13f30e30cb325364d383a9acc6d3)
程序运行结果如图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=1739280678-tw6uofEftqC3eUCkShjnQmvFdiU8ZFgc-0-76ca89a42e6d9fdbdf03c69851a306e0)
程序运行结果如图5-17所示。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P82_40574.jpg?sign=1739280678-Rtj5h4Un2XcdDKIuPRgLGBV4CClosfQE-0-f3516d4522d258f085f20ee53342f096)
图5-16 使用:号进行0填充结果
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P82_40577.jpg?sign=1739280678-Ozw6PFpM7qaJEW7U5TYNyO0gQHXTC0ry-0-587233973a69dcd1534652259902123e)
图5-17 使用函数进行0填充结果