python - 实现中文字符串对齐的方法
英文和数字通常是半角字符,在输出和显示时只占用1个字符位置,而中文是全角字符,一个字符占用2个字符位。所以在屏幕上显示时宽度会不一致。格式化输出额空格只占用一个字符位置,所以在当字符串内有中文时,会无法对齐。
所以一种比较直接的方法就是把所有半角字符转为全角字符输出:
def aligns(string,length=20):
difference = length - len(string) # 计算限定长度为20时需要补齐多少个空格
if difference == 0: # 若差值为0则不需要补
return string
elif difference < 0:
print('错误:限定的对齐长度小于字符串长度!')
return None
new_string = ''
space = ' '
for i in string:
codes = ord(i) # 将字符转为ASCII或UNICODE编码
if codes <= 126: # 若是半角字符
new_string = new_string + chr(codes+65248) # 则转为全角
else:
new_string = new_string + i # 若是全角,则不转换
return new_string + space*(difference) # 返回补齐空格后的字符串
调用方法:
aligns(要对齐的字符串,占用长度)