【Python】Python中中文的字符串格式化对齐

中文字符在字符占用上相当于两个英文字符,但是字体设计上,一般一个中文字符的宽度不会等于两个英文字符的宽度,所以打印出来的效果有偏差。

如:

c = [
    '决',
    '决决',
    '决决决',
    '决决决决',
    '决决决决决',
    '决决决决决决',
    '决决决决决决决'
]
print('----正常字符串格式化:----')
for x in range(len(c)):
    print('|%20s|' % c[x])
打印结果如下图所示:

【Python】Python中中文的字符串格式化对齐_第1张图片


但是等宽字符一个中文字体的宽度刚好等于两个英文字符宽度。我们可以根据这个,自动计算字符串的长度。

def chinese(data):
    count = 0
    for s in data:
        if ord(s) > 127:
            count += 1
    return count

print('----通过函数计算长度格式化:----')
for x in range(len(c)):
    number = chinese(c[x])
    newStr = '{0:{wd}}'.format(c[x],wd=20-number)
    print('|%s|' % newStr)
【Python】Python中中文的字符串格式化对齐_第2张图片

GitHub:https://github.com/Jueee/04-LiaoXueFeng/blob/master/81-Chinese.py


你可能感兴趣的:(Python)