我正在创建一个命令行脚本,我希望有一个框...
+--------+
| |
| |
| |
+--------+
...这将始终适合其内容。我知道如何做顶部和底部,但它让 ljust 和 rjust 正常工作。每行可能有一个字符串替换,即 5 个,这些字符串的长度可以是 0 到 80 之间的任何值。
我一直在做这样的事情:
print "|%s|" % (my_string.ljust(80-len(my_string)))
但天哪,太乱了……而这只是一种硬编码的替换。我不知道如何使其动态化,比如说第一行有 2 个子集,第二行有 3 个子集,第三行有 1 个子集(所有这些都以列格式)。
因此,对于一个基本示例,我需要:
+--------+
| 1 |
| 1 2 3 |
| 1 2 |
+--------+
我这样做:
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()
功能。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)