对字符串非中文格式化,我们常用的方式是通过print 方式下的右对齐 n%s(左对齐-n%s)或者ljust\rjust;
但上面存在一个缺点就是对于含有中文字符串的处理是不兼容,导致打印出来格式还是没有进行对齐的;
补充下rjust的处理规则:
1. 通过len获取字符串的长度,len的实现方式是对不同的字符进行解码为unicode,再计算unicode所占的字节长度;
2. " "* (width - len) + argu,即补齐相减后的长度的空格,连接原有字符串后返回
主要原因是:在终端展示的时候并不是中文并没有按照三个字符宽的长度去展示,按照等宽字符,每个中文字符占的就是两个英文字母(终端或者文件上面为什么占用的两个字母宽度?)
得到的结果如下:
字符串"中文"在rjust进行对齐处理的因为是utf编码,每个字符的长度(1-6个字节),导致在取字符串长度的时候取的长度