关于#python#的问题,请各位专家解答!

请问如何将表格对齐

img

img

用了制表符但好像没用好 没有完全对齐 请问各位需要哪里更改 谢谢

\t仅能起到将光标移到下一个8*n+1(n为大于等于0的整数)的列位置,当列数据宽度大于8时,就起不到对齐数据内容的作用了。

#-*- encoding=GBK -*-
list1=[['车次','出发站-到达站','出发时间','到达时间','历时'],
       ['T40','长春-北京','00:12','12:20','12:08'],
       ['T298','长春-北京','00:06','10:50','10:44'],
       ['T158','长春-北京','12:48','21:06','08:18'],
       ['Z62','长春-北京','21:58','06:08','08:20']]

#统计得出每列的最大宽度
maxw=[]
for c in range(5):
    maxw.append(0)
    for r in range(5):
        if r==0:
            maxw[c]=len(list1[r][c].encode('gbk'))+1
        else:
            w=len(list1[r][c].encode('gbk'))+1
            if w>maxw[c]:
                maxw[c]=w

for r in range(5):
    s=""
    for c in range(5):
        s=s+("%s%s" %(list1[r][c],' '*(maxw[c]-len(list1[r][c].encode('gbk')))))
    print(s)

#车次 出发站-到达站 出发时间 到达时间 历时
#T40  长春-北京     00:12    12:20    12:08
#T298 长春-北京     00:06    10:50    10:44
#T158 长春-北京     12:48    21:06    08:18
#Z62  长春-北京     21:58    06:08    08:20



以上最后的注释显示仍对不齐,是因为CSDN弱智的排版模块。
看截图:

img

使用制表符是会出现这样的问题,一个制表符代表了固定宽度,如果前面的字符串长度不同,后面的制表符会自动调整位置,就会出现这种情况。
需要先预判每列中最长的字符串的长度是多少,然后根据这个长度再去决定该列中每个字符串应该占多宽的位置。