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

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

如:

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值