中文字符在字符占用上相当于两个英文字符,但是字体设计上,一般一个中文字符的宽度不会等于两个英文字符的宽度,所以打印出来的效果有偏差。
如:
c = [
'决',
'决决',
'决决决',
'决决决决',
'决决决决决',
'决决决决决决',
'决决决决决决决'
]
print('----正常字符串格式化:----')
for x in range(len(c)):
print('|%20s|' % c[x])
打印结果如下图所示:
但是等宽字符一个中文字体的宽度刚好等于两个英文字符宽度。我们可以根据这个,自动计算字符串的长度。
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)
GitHub:https://github.com/Jueee/04-LiaoXueFeng/blob/master/81-Chinese.py