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 = '') |
修改后
问题解决。