python的print输出文本对齐print(%-35s)简介

1、 问题描述

当我们用print打印文本时,常常会遇到对不齐的问题,使得结果看起来非常乱。如下图所示,由于第一列字符串的长度差别较大,即使我利用制表符(\t)来分割也对不齐,还是会相差1到2两个\t的长度。
在这里插入图片描述

2、解决方法

利用print的格式化输出来解决。 print("%-35s\t%s"%(i+’:’,str(data.attrs[i]))) 。

这里的%是一个占位符,占位符意思是先利用%在输出中占一个坑位,等会儿再用对应的变量来填补这个坑位。%s表示的是占了一个字符串型坑位,等会儿的会输出字符串;同理,%d,%f等分别表示整型坑位和浮点型坑位。

%和s之间还可以添加一些东西来表示坑位长度(如第一个占位符%-35s),而如果什么都不加(如第二个占位符 %s)则表示不预先设定长度,按照字符串的实际长度输出。比如35表示占了一个长度为35个字符的坑位,等会如果变量的长度不够35,那么就用空格补满35,但如果变量的长度等于或者超过35,那么就按照实际长度输出,相当于这个35失效了,效果等同于%s。

此外,35还有正负之分,用来表示变量输出的时候从哪边开始填坑。如果为35(+35),那么从右边开始填坑,等会如果变量的长度不够35,那么就在左边用空格补满35,此时得到的效果就是右对齐,这也是计算机默认的。而-35则表示从左边开始填坑,等会如果变量的长度不够35,那么就在右边用空格补满35,此时得到的效果就是左对齐。但如果变量的长度等于或者超过35,那么就按照实际长度输出,相当于这个35或-35失效了,效果等同于%s。

两个坑位之间,也就是 %-35s 和 %s 还可以用一个符号隔开,这里我用的是制表符(\t)隔开。

坑位设置完之后就是用变量填坑。填坑的方法是在 “%-35s\t%s” 后加上 %() ,然后再括号里按顺序放上变量,比如 %-35s 对应 i+’:’ ,而 %s 对应 str(data.attrs[i])) 。最后的结果如下图。

总结一下,其实 %-35s 可以总结为左对齐,长度为35,%s 可以总结为右对齐,不设定长度。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_42999968/article/details/112229720
今日推荐