python如何对齐输出_python对齐输出

本文探讨了在Python中如何优雅地实现对齐输出,尤其是处理中文字符时的注意事项。通过介绍`.format`方法的使用,展示了如何利用变量进行右对齐和居中对齐,并解决了中文字符在计算长度时的字节问题。最后,通过结合制表符和`.format`的方法,实现了理想中的对齐效果。
摘要由CSDN通过智能技术生成

这个问题烦恼了挺久,一般情况下我都是用解决,但其实这样的办法并不是很nice,然后今天在写一个demo的时候实在看不下去,就百度科普了一波,确实是有比较nice的解决方案。

像这样:

a150b6a0c8d3ca67a3ac683d8f95e7be.png

令人十分难受啊!

#-------------------------------------------------------------------------------------------------

在此之前先说一下python中的.format格式化输出

cbcc1d094d709a9326dc304ec8a2496a.png

python2.6开始,可以使用str.format进行轻松的格式化,

如上可以看到,对变量的处理简洁灵活,此外对数字的各种位数处理也很到位

{:为右对齐,^为居中),少于x位自动补齐(默认为空格补齐)

这里值得注意的是,x也可以作为变量代入:

9c309aa97e80f127b677b1f96a682db9.png

#-----------------------------------------------------------------------------------------------------

着手解决问题,

第一反应使用制表符,带来的问题便是字符串长度差距超过一个制表位时,会跳到下一个制表位,如图:

1f00f1bddaf17649bae1edfab433c0d7.png

不能接受,使用str.format补齐name属性的长度为25

结果却是这样的:

a3c6bcf01515c1140928460a0289be93.png

py虽好,有些细节还是没有照顾到中文

这里补齐长度时中文字符也按1字节计算了,

然而我们知道,utf-8中中文占用3个字节,GBK中占用了2个字节,只算作1字节显然不能对齐

这时求助于prettytable包输出表格,然而输出也不理想,可以想象也没有考虑中文编码的问题(或是需要设置编码为utf-8或gbk?)

分析一下理想的name所占的长度,应为固定的x字节(这里按目前的爬取结果暂时取22)

那么他的补齐长度应为

len = 22 - gbk编码下name的字节数 + name的字符数

幸运的是str.format支持使用变量代替补齐长度的值

尝试以下代码:

print('[{name:

结果十分接近理想了:

b04e43a417ffac50c7ed43dd0830f049.png

还是有一些迷之问题导致1-0.5字节长度的偏差,猜测是由于中文字体不是等宽字体的缘故?

然而不用多虑,这里就可以使用一记粗暴的制表符解决问题了

print('[{name:

1ba3706b4d74f3573b8a7f0f564e33dc.png

大功告成!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值