python版实现文本左右对齐排版

清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>

# python版实现文本左右对齐排版
# 题目来源: http://www.bathome.net/thread-1246-1-1.html
# 依山居 7:17 2015/11/4

# str.format 字符串格式化参考:
# http://www.crifan.com/python_string_format_fill_with_chars_and_set_alignment/

# just()字符串对齐 参考:
# http://blog.csdn.net/u012515223/article/details/20463231
"""
1.txt内容:
111111111111111111111    98912 张三
222222222222222222    150020 李四四
  333333333333333333333    360000 王五
444444444444444444    2332 赵六六
  555555555555555555    222 田七
666666666666666666666    999999 舞吧
"""

#说明我的代码没按题目要求全部使用空格填充是为了让代码用法看起来直观一些。

#方法一 format格式化对齐
def f1():    
    with open("1.txt","r") as f:
        for s in f:
            l=s.rsplit ()
            t='{0:-<25} {1: >7} {2}'.format(l[0],l[1],l[2])    
            print(str(t))

"""
输出:
111111111111111111111----   98912 张三
222222222222222222-------  150020 李四四
333333333333333333333----  360000 王五
444444444444444444-------    2332 赵六六
555555555555555555-------     222 田七
666666666666666666666----  999999 舞吧
"""

#方法2 使用just()对齐
r=''
def f2():
    f=open("1.txt","r")
    for s in f:
        l=s.rsplit()
        print(l[0].ljust(25," "),l[1].rjust(10,"^"),l[2])

"""
输出:
111111111111111111111     ^^^^^98912 张三
222222222222222222        ^^^^150020 李四四
333333333333333333333     ^^^^360000 王五
444444444444444444        ^^^^^^2332 赵六六
555555555555555555        ^^^^^^^222 田七
666666666666666666666     ^^^^999999 舞吧
"""

#方法3
"""
思路是rsplit拆分成三列,l得到如['111111111111111111111', '98912', '张三']
算出列1,列2的最长,以此算出需要填充的长度,
"""
def f3():
    f=open("1.txt","r")
    txt=f.readlines()
    maxa=0
    maxb=0
    for line in txt:
        line=line.rsplit()
        la=len(line[0])
        lb=len(line[1])
        if la >maxa:
            maxa=la
        if lb > maxb:
            maxb=lb

    for line in txt:       
        line=line.rsplit()
        la=len(line[0])
        lb=len(line[1])
        if la ==maxa:
            tla=line[0]
        elif la<maxa:
            tla=line[0]+">"*(maxa-la)
        if lb ==maxb:
            tlb=line[1]
        elif lb<maxb:
            tlb=" "*(maxb-lb)+line[1]
        print(tla,tlb,line[2])
"""
输出:
111111111111111111111  98912 张三
222222222222222222>>> 150020 李四四
333333333333333333333 360000 王五
444444444444444444>>>   2332 赵六六
555555555555555555>>>    222 田七
666666666666666666666 999999 舞吧
"""