Python 处理中英文对齐

Python 处理中英文对齐

处理思路

中文英文在编辑器占的宽度不同,中文是比英文是2:1,计算总的宽度是,在发现字符是中文的时候算两个宽度,英文记录一个,在格式化时,发现一个中文是在总宽度-1,英文的总宽度保持不变

实现

代码如下:

def len_utf(string: str) -> int:
	# 计算字符所需宽度
    length = 0
    for i in string:
        codes = ord(i)  # 将字符转为ASCII或UNICODE编码
        if codes <= 500:  # 若是半角字符
            length += 1 # 宽度+1
        else:
            length += 2 # 全角字符宽度+2
    return length
re_list = [
	["jdfkj","测试","djfka"],
	["测试的","kjfka","1231"]
]
if re_list:
    for i in range(len(re_list[0])):
    	# 遍历每列的最大宽度
        max = 0
        for j in re_list:
            try:
                length = len_utf(j[i])
                if length > max:
                    max = length
            except Exception as e:
                # print(e)
                pass
        for j in re_list:
        	# 处理每个字符的宽度
            try:
                _length = 0
                for k in j[i]:
                    if ord(k) > 500:
                        # 如果遇到中文, 需要减掉的宽度+1
                        _length += 1
                # 将字符按总宽度格式化, 左对齐
                _str = j[i].ljust(max-_length, " ")
                j[i] = _str
            except Exception as e:
                # print(e)
                pass
for i in re_list:
    print("\t".join(i))

效果如下:

jdfkj   测试    djfka
测试的  kjfka   1231 
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值