如何让总分下面的数字对齐

这是输出的代码,看看是哪有问题吗,怎么输出的数字不对齐

img


如何让总数下面的数字对齐

img

中英文混合字符串的对齐参考


因为Python对于汉字和英文都算作1个字符的,len('一二三abc')输出是6,而汉字和英文的宽度其实不一样,所以用format()和ljust()等函数都无法对齐,只能自己写函数

def my_align(_string, _length, _type='L'):
    """
    中英文混合字符串对齐函数
    my_align(_string, _length[, _type]) -> str
    :param _string:[str]需要对齐的字符串
    :param _length:[int]对齐长度
    :param _type:[str]对齐方式('L':默认,左对齐;'R':右对齐;'C'或其他:居中对齐)
    :return:[str]输出_string的对齐结果
    """
    _str_len = len(_string)  # 原始字符串长度(汉字算1个长度)
    for _char in _string:  # 判断字符串内汉字的数量,有一个汉字增加一个长度
        if _char > '\u00ff':  # 判断一个字是否为汉字
            _str_len += 1
    _space = _length-_str_len  # 计算需要填充的空格数
    if _type == 'L':  # 根据对齐方式分配空格
        _left = 0
        _right = _space
    elif _type == 'R':
        _left = _space
        _right = 0
    else:
        _left = _space//2
        _right = _space-_left
    return ' '*_left + _string + ' '*_right



li = [
    [1,"aaa学校",468],
    [14,"bbbbbbbb学校",68],
    [1888,"第一学校",7667],
]

print(my_align('排名', 10, 'L')+my_align('学校名称', 40, 'L')+my_align('总分', 10, 'L'))
for u in li:
    print(my_align(str(u[0]), 10, 'L')+my_align(u[1], 40, 'L')+my_align(str(u[2]), 10, 'L'))

img

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

https://blog.csdn.net/yeziand01/article/details/93601068?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164847314216780255290713%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=164847314216780255290713&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~baidu_landing_v2~default-1-93601068.142^v5^pc_search_insert_es_download,143^v6^register&utm_term=python%E5%A6%82%E4%BD%95%E8%AE%A9%E8%BE%93%E5%87%BA%E7%9A%84%E7%BB%93%E6%9E%9C%E5%AF%B9%E9%BD%90&spm=1018.2226.3001.4187
参考这个

你给他存到numpy里面,不就对齐了吗

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632