python 中英混合字符串格式对齐所引发的思考

本文讨论了Python中使用rjust等方法对含有中文的字符串进行格式化对齐时遇到的问题,分析了其原因,即中文字符在终端显示时不按3个字符宽度处理。为解决这个问题,文章提出了自定义对齐函数`align`,并提供了`string_ljust`和`string_rjust`函数。最后,文章强调了解编码问题的重要性,并给出了相关链接作为参考资料。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对字符串非中文格式化,我们常用的方式是通过print 方式下的右对齐 n%s(左对齐-n%s)或者ljust\rjust;

但上面存在一个缺点就是对于含有中文字符串的处理是不兼容,导致打印出来格式还是没有进行对齐的;


补充下rjust的处理规则:

1. 通过len获取字符串的长度,len的实现方式是对不同的字符进行解码为unicode,再计算unicode所占的字节长度;

2. " "* (width - len) + argu,即补齐相减后的长度的空格,连接原有字符串后返回

主要原因是:在终端展示的时候并不是中文并没有按照三个字符宽的长度去展示,按照等宽字符,每个中文字符占的就是两个英文字母(终端或者文件上面为什么占用的两个字母宽度?)


得到的结果如下:


字符串"中文"在rjust进行对齐处理的因为是utf编码,每个字符的长度(1-6个字节),导致在取字符串长度的时候取的长度

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值