使用范围打印并使用分隔符(end =)

时间:2018-11-29 23:01:51

标签: python

if i == 0:
   for ii in range(4):
      print((lengths[ii]) * '-', end='+')
print(fmtstr.format(list_l[i][0].upper(), list_l[i][1].upper(), list_l[i][2].upper(), list_l[i][3].upper()))

打印输出:

-------------------+-------------+--------------------+----+|        AAAAA        |    BBBBBB     |        CCCCC         | DDDD | 

我的两个问题是,使用end命令仅将'+'放在每组'length'的末尾,然后将其连接到下一个print命令。如何在上一次运行期间停止end命令,以免将其添加到要打印的下一组数据上?另外,如何使分隔符也位于数据的开头和结尾?

1 个答案:

答案 0 :(得分:0)

由于您的问题不完整且不清楚,因此我不得不假设您的起始数据如下所示:

i = 0
lengths = [18,13,20,4]
list_l = [['aaaaa', 'bbbbbb', 'ccccc', 'dddd']]
fmtstr = "|        {}        |    {}     |        {}         | {} | "

if i == 0:
   for ii in range(4):
      print((lengths[ii]) * '-', end='+')

print(fmtstr.format(list_l[i][0].upper(), list_l[i][1].upper(), list_l[i][2].upper(), list_l[i][3].upper()))

根据我的收集,您希望最终结果看起来像这样:

+---------------------+---------------+----------------------+------+
|        AAAAA        |    BBBBBB     |        CCCCC         | DDDD |
+---------------------+---------------+----------------------+------+

您可以收集一个字符串,而不是尝试立即创建一个字符串,然后将其打印在数据的两侧:

s = "+"
if i == 0:
   for ii in range(4):
      s += (lengths[ii] * '-') + "+"

print(s)
print(fmtstr.format(list_l[i][0].upper(), list_l[i][1].upper(), list_l[i][2].upper(), list_l[i][3].upper()))
print(s)

哪个给:

+------------------+-------------+--------------------+----+
|        AAAAA        |    BBBBBB     |        CCCCC         | DDDD | 
+------------------+-------------+--------------------+----+

很明显,这不是填充/居中。但是,如果我不知道您的原始数据或循环中的代码,该怎么办?