Python format()格式:中文对齐问题

本文通过实例演示如何在Python中使用format方法精确控制输出格式,特别是在处理中文字符时的宽度和对齐方式,以实现美观的表格效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<填充><对齐><宽度>,<精度><类型>
引导符号填充单个字符,表示所创槽区域空余部分的填充

< 左对齐

> 右对齐

^ 居中

槽的设定输出宽度数字的千位分隔符适用于整数和浮点数浮点数小数部分的精度或字符串的最大输出长度整数类型b,c,d,o,x,X浮点数类型e,E,f,%

 

本文以大学排名的实例说明:

def printUnivList(ulist,num):
    tplt = "{:^10}\t{:^10}\t{:^10}"
    print(tplt.format("排名","大学","分数",chr(12288)))
    for i in range(num):
        u=ulist[i]
        print(tplt.format(u[0],u[1],u[2],chr(12288)))

在创建的format格式模板中,创建的槽输出宽度为10,而系统默认的是西文字符串的输出长度,一下为输出结果:

很显然,排版上出现了紊乱

从原理上分析,是因为单个西文字符的长度要比单个中文字符的长度要小,所以当所需的中文字符串长度大于所提供的长度时,便会自动占用后面的空间,导致后面数据的排版不符合我们的规定。

要解决这个问题,只需要将我们的长度单位,换成单个中文字符串的长度,即10代表的是10个中文字符的长度

通过{3}和chr(12288)可以很好的解决问题()

def printUnivList(ulist,num):
    tplt = "{0:^10}\t{1:{3}^10}\t{2:^10}"
    print(tplt.format("排名","大学","分数",chr(12288)))
    for i in range(num):
        u=ulist[i]
        print(tplt.format(u[0],u[1],u[2],chr(12288)))

输出结果如下:

 

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值