Python-创建具有动态大小的文本边框

 似是故人来 发布于 2023-02-08 13:07

我正在创建一个命令行脚本,我希望有一个盒子...

+--------+
|        |
|        |
|        |
+--------+

...将永远适合其内容。我知道怎么做顶部和底部,但是它使杠杆和杠杆正确工作。每行可能有一个字符串替换项,或5,并且这些字符串的len可以是0到80之间的任何值。

我一直在做类似的事情:

print "|%s|" % (my_string.ljust(80-len(my_string)))

但是,当当真是一团糟……而这仅仅是一种硬编码替代。我不知道如何通过第一行的2个subs和第二行的3个subs和第三行的1个subs来使其动态化(所有这些都以列格式)。

因此,对于一个基本示例,我需要:

+--------+
| 1      |
| 1 2 3  |
| 1 2    |
+--------+

Bunyk.. 5

我这样做是这样的:

def bordered(text):
    lines = text.splitlines()
    width = max(len(s) for s in lines)
    res = ['?' + '?' * width + '?']
    for s in lines:
        res.append('?' + (s + ' ' * width)[:width] + '?')
    res.append('?' + '?' * width + '?')
    return '\n'.join(res)

因此,您首先将所有对象格式化为可text警告的,然后将其传递给bordered()函数。

1 个回答
  • 我这样做是这样的:

    def bordered(text):
        lines = text.splitlines()
        width = max(len(s) for s in lines)
        res = ['?' + '?' * width + '?']
        for s in lines:
            res.append('?' + (s + ' ' * width)[:width] + '?')
        res.append('?' + '?' * width + '?')
        return '\n'.join(res)
    

    因此,您首先将所有对象格式化为可text警告的,然后将其传递给bordered()函数。

    2023-02-08 13:10 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有