Python3 中英文列表输出对齐

由于中文占全角宽度,一般的字符,比如英文占半角宽度,所以我们需要一个函数来调整字符串长度,使得字符串长度相同。这里采用的是补空格的方式~~

1.little tip

在开始之前提示一点,由于pycharm的字体问题可能会导致中文字符位数不是英文两倍的情况,比如默认字体JetBrains Mono,如果你的python字体是JetBrains Mono的话,执行下面的代码可能会出现这样的输出:

所以如果要使用该代码实现对齐输出,最好先将pycharm字体改为中文为英文两倍宽的字体类型,我下面的输出结果采用的是楷体(KaiTi)

修改字体的方式是依次点击:File>Settings>Editor>Font,就来到了字体设置界面,点击Font就可以选择字体啦~,之后点击OK即可应用字体: 

更改前:(观察右边的预览)

更改后:

2.example

以打印购物清单为例:

要打印列表:

products = [["earplugs", 12], ["电冰箱", 7000], ["冰红茶", 4], ["TOM & JERRY", 10], ["migo", 70], ["辣条", 0.5], ["doge", 10000]]

效果如下:

代码如下~~

# -*- coding = utf-8 -*-
n2 = 15                     # 提示ERROR时修改此处,这是设定的字符串长度
# 下面函数的作用是把字符串长度设定为n个字节(用空格补齐),str为待处理字符串
def al(str, n):
    m = len(str)            # m为原字符串长度
    i = 0                   # i为计数变量,计算汉字个数

    for c in str:           # c遍历字符串str的字符
        if '\u4e00' <= c <= '\u9fef':  # 中文字符Unicode编码范围,其实还有很多其它的,但几乎都用不到,这个范围已经足够了
            i += 1
    dif = n-(m+i)           # m+i为原字符串真实长度(字符位数),dif为待补空格数
    if dif >= 0:
        return str+" "*dif
    else:
        print("ERROR错误:限定的对齐长度小于字符串长度!")
        return None


# 下面打印商品列表
products = [["earplugs", 12], ["电冰箱", 7000], ["冰红茶", 4], ["TOM & JERRY", 10], ["migo", 70], ["辣条", 0.5], ["doge", 10000]]
n1 = len(products)+2

print("------商品列表------")
for i in range(len(products)):
    print(al("%d" % i, n1)+al(products[i][0], n2), products[i][1])

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值