加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-17 17:31:17 所属栏目:Python 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 # python版实现文本左右对齐排版# 题目来源: http://www.bathome.net/thread-1246-1-1.html# 依山居 7:17 2015/11/4# str.format 字符串格式化参考:#

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

# 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内容:
222222222222222222221    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))

"""
输出:
222222222222222222221----   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])

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

#方法3
"""
思路是rsplit拆分成三列,l得到如['222222222222222222221','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])
"""
输出:
222222222222222222221  98912 张三
222222222222222222>>> 150020 李四四
333333333333333333333 360000 王五
444444444444444444>>>   2332 赵六六
555555555555555555>>>    222 田七
666666666666666666666 999999 舞吧
"""

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读