打印可变头部

2024-05-20 03:48:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我想打印这些标题,以便在字符串长度更改时变长/变短。我真的不知道我该怎么做,我想我可以使用len()和打印一些“=”取决于他们的长度,但它没有像预期的那样。你知道吗

+==========================+
| Running: hba_test
| Skipping: abort/"Basic Sanity" delayedabort/"Abort Control List"
+==========================+
+==========================+
| Skipping: sdt_test
+==========================+

这些是标题,这是当前用来生成它们的代码。你知道吗

    #print header to seperate tests
    l1 = len(x)
    l2 = len(y)

    print "+==========================+"
    if disable:
        print "| Skipping: %s " % x
    else:
        print "| Running: %s " % x
        if 'disable=' in test:
           print "| Skipping:%s " % y 
    print "+==========================+"

Tags: 字符串test标题lenifbasicrunningdisable
2条回答

沿着这条线怎么办?不过,它并不优雅,也不“硬编码”。你知道吗

使用原始代码:

x = 'hba_test'
y = 'abort/"Basic Sanity" delayedabort/"Abort Control List"'
disable = False
test = 'disable='

#print header to seperate tests
l1 = len(x)
l2 = len(y)


if disable:
    headerBreak ="+" + "="*(l1+12) + "+"
    print headerBreak
    print "| Skipping: %s |" % x
else:
    headerBreak =  "+" + "="*(max(l1,l2)+11) + "+"
    print headerBreak
    print "| Running: %s" % x, ' '*(l2-l1)+ '|'
    if 'disable=' in test:
       print "| Skipping:%s |" % y 
print headerBreak

退货:

+=================================================================+
| Running: hba_test                                               |
| Skipping:abort/"Basic Sanity" delayedabort/"Abort Control List" |
+=================================================================+

+====================+
| Skipping: hba_test |
+====================+

使用函数:

x = 'hba_test'
y = 'abort/"Basic Sanity" delayedabort/"Abort Control List"'
disable = False
test = 'disable='

#print header to seperate tests
def asciiBlock(lineList):
    maxLength = 0
    lines = []
    for line in lineList:
        newLine = ': '.join(line)
        lines.append(newLine)
        if maxLength<len(newLine):
            maxLength=len(newLine)


    asciiArt = '+'+'='*(maxLength+2)+'+'
    newLineList = [asciiArt]
    for line in lines:
        newLineList.append('| '+ line + ' '*(maxLength-len(line))+' |')

    newLineList.append(asciiArt)

    return '\n'.join(newLineList)


if disable:
    lineList = [('Skipping',x)]

else:
    lineList = [('Running',x)]
    if 'disable=' in test:
        lineList.append(('Skipping',y))

print asciiBlock(lineList)

这可能有助于:

如果知道要打印多少=,可以执行以下操作:

In [2]: "=" * 50
Out[2]: '=================================================='

相关问题 更多 >