在python中,有时候会出现中英文混合输出的情形,但是由于中文默认是全角格式(一个中文字符占用两个字符宽度),这会对python原生的print函数带来一些障碍。尤其是用户用print对齐输出的时候,这种差异会导致文本无法准确对齐。为了解决这种问题,这里提出一种方法。
python的print函数,在进行对齐处理的时候,首先需要判断字符串的长度。这个就是通常的len()函数。python在计算字符串长度的时候,任何字符都只会被算作长度1,无论全角还是半角,所以会有下面的情况:
> len("一二三")
3
> len("123")
3
但是对于对于全角字符,打印宽度是两个字节,半角字符是单个字节,譬如下例:

这里很明显的看到,同样的长度为3的字符,全角字符是半角字符一倍的打印长度。
这种差距,会影响到print的对齐打印,譬如下例:

这个是一个右对齐的示例,print函数首先计算了打印对象的长度len(),得到了这个打印对象的长度为3(此处忽略全角和半角),所以print会从右对齐的20节点开始排布,意即print把从第18 个字符的位置开始打印,这里用红线表示,所以无论全角还是半角对象,print都会从第18 个字符的位置打

博客指出Python中中英文混合输出时,因中文默认全角格式,会对原生函数带来障碍,导致文本无法准确对齐。介绍了全角半角字符在打印宽度上的差异及对对齐打印的影响,提出在对齐宽度上考虑全角字符额外宽度,实现全半角混合打印对齐的方法。
最低0.47元/天 解锁文章
2906

被折叠的 条评论
为什么被折叠?



