Python中文字符对齐

Python中常用的格式化输出主要有以下两种:

  1. 使用%加英文字母作为占位符,对各种类型的数据进行格式化;
  2. str.format()函数,利用format()函数中的参数对str{}标识的内容进行替换;

本文主要介绍str.format()函数的格式化输出。

1.默认格式

# {}中的数字表示format函数中的参数序号(从0开始),默认情况可以不用填写数字
pattern = "{0}\t{1}\t{2}\t{3}\t{4}\t{5}"
print(pattern.format("金种","实时主动积存价格","最低价","最高价","定期积存价","更新时间"))
print(pattern.format("积存金",372.73,372.73,372.73,366.10,"2021-08-15 00:18:04"))

输出如下:
在这里插入图片描述
由输出结果可以看出,列元素并没有完全对齐,这是因为输出结果是否对齐取决于字体宽度,而一个中文字的宽度大约相当于两个英文字母的宽度,这里需要注意,并不是所有格式的中文字体都是两个英文字母的宽度:
在这里插入图片描述
所以为了让对应的位置对齐,需要约束对应位置的打印宽度。看第2小节的进阶部分。

2.进阶

正如上面所说,为了对齐打印出的数据,需要对指定位置的字体宽度进行约束,将约束条件与参数序号用:隔开,常用的一些约束条件如下:

  1. 对齐方式:
    - 居中对齐:^
    - 靠右对齐:>
    - 靠左对齐:<
  2. 占用宽度:使用数字表示,一般跟在对齐方式后面。比如{:<4}表示占用4个宽度单位并靠左对齐,若是占用的宽度未使用完则进行填充,默认使用英式空格填充。
# 由于中文字的宽度大约是默认填充方式的2倍,所以写成如下格式
pattern = "{0:<4}\t{1:<16}\t{2:<8}\t{3:<8}\t{4:<10}\t{5:<8}"
print(pattern.format("金种","实时主动积存价格","最低价","最高价","定期积存价","更新时间"))
print(pattern.format("积存金",372.73,372.73,372.73,366.10,"2021-08-15 00:18:04"))

输出如下:
在这里插入图片描述

使用指定的填充格式

# 冒号后的{6}表示format函数的参数序号为6的参数,即chr(12288)填充剩余的长度
pattern = "{0:{6}<3}\t{1:{6}<8}\t{2:{6}<4}\t{3:{6}<4}\t{4:{6}<7}\t{5:{6}<6}"
# chr(12288)表示中文空格
print(pattern.format("金种","实时主动积存价格","最低价","最高价","定期积存价","更新时间",chr(12288)))
print(pattern.format("积存金",372.73,372.73,372.73,366.10,"2021-08-15 00:18:04",chr(12288)))

输出
在这里插入图片描述

注意:
由于不同格式的中文字体与英文字母的宽度不一,需要多次尝试占用宽度,以达到最优的对齐效果。

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

great-wind

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值