Python 对齐中文输出

问题

源代码

采用居中对齐,如左图

print('{:^9}\t'.format(string_var), end = '')

采用左对齐,如右图

print('{:<9}\t'.format(string_var), end = '')

运行结果

未能正确对齐。

原因

因为我们的输出结果中有中文,当我们输出的中文宽度不够约定的宽度时,系统会自动进行填充。而问题恰恰出现在填充这里,系统填充的是英文字符,而我们输出占用的是中文字符的宽度。单位不一致,自然会显得很别扭。

解决方案

替换填充字符为 chr(12288) 即中文空格。

format 方法补充说明如下:

: <填充> <对齐> <宽度> , .<精度> <类型>
引导符号 用于填充的单个字符 < 左对齐, > 右对齐, ^ 居中对齐 输出宽度 数字的千位分隔符,适用于整数和浮点数 浮点数小数部分的精度或字符串的最大输出长度 整数类型 b, c, d, o, x, X ,浮点数类型 e, E, f, %

源代码

chr(12288) 填充,即这里的 {1}

居中对齐,如左图

print('{0:{1}^9}\t'.format(string_var, chr(12288)), end = '')

左对齐,如右图

print('{0:{1}<9}\t'.format(string_var, chr(12288)), end = '')

修改后

问题解决。