这是输出的代码,看看是哪有问题吗,怎么输出的数字不对齐
如何让总数下面的数字对齐
中英文混合字符串的对齐参考
[Python]中英文混合字符串的对齐 - 简书
002-PG002-Python002 中英文混合字符串的对齐 最近几天在研究tkinter的颜色名称,准备写个能展示所有支持的颜色名的小程序。做着做着发现一个问题,tkin...
https://www.jianshu.com/p/74500b7dc278
因为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'))
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!