Python 在终端上打印字符串时,纯英文比较好对齐,中英文混杂时不容易对齐。
纯英文字符串对齐方法:
text1 = "apple"text2 = "banana"# 左对齐print("{:<10} | {}".format(text1, text2))# 右对齐print("{:>10} | {}".format(text1, text2))# 居中对齐print("{:^10} | {}".format(text1, text2))

当字符串为中文时,此时很难对文本对齐。比如前一个字符串没对齐时,后面跟的数字就歪歪扭扭的:
print("{:<30} {}".format(truncated_s, len(value)))

字符串对齐的逻辑是长度不足时补空格,但中英文字符宽度不同,中文字符的宽度是英文字符的两倍。 字符串自带的 format 方法在处理对齐时只考虑了英文,处理中文时就会出现无法对齐的现象。
既然是字符宽度不同导致的,只要能正确计算字符串的宽度而非字符个数,那么就可以根据字符串的宽度来补空格。
处理宽字符对齐的函数如下:
import wcwidthdef align_text(text, width):"""中文对齐"""text_width = wcwidth.wcswidth(text)if text_width < width:return text + ' ' * (width - text_width)else:return text
这里用到了 wcwidth 模块,使用前需要 pip install wcwidth 进行安装。更改后的对齐语句为:
print("{} {}".format(align_text(truncated_s, 30), len(value)))
中文对齐输出效果如下:

全文完。
如果转发本文,文末务必注明:“转自微信公众号:生有可恋”。
文章转载自生有可恋,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




