如何.rjust()

2024-09-29 21:27:06 发布

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

.rjust()是如何工作的?为什么它会将字符相对于前一个字符放置,而不是相对于第一个字符放置(放置在屏幕最左边还是最左边)?

我有一个例子:

def pairwiseScore(seqA, seqB):
    prev = -1
    score = 0
    length = len(seqA)
    similarity = []
    relative_similarity = []

    for x in xrange(length):

            if seqA[x] == seqB[x]:
                    if (x >= 1) and (seqA[x - 1] == seqB[x - 1]):
                            score += 3
                            similarity.append(x)
                    else:
                            score += 1
                            similarity.append(x)
            else:
                    score -= 1

    for x in similarity:

            relative_similarity.append(x - prev)
            prev = x

    return ''.join((seqA, '\n', ''.join(['|'.rjust(x) for x in relative_similarity]), '\n', seqB, '\n', 'Score: ', str(score)))


print pairwiseScore("ATTCGT", "ATCTAT"), '\n', '\n', pairwiseScore("GATAAATCTGGTCT", "CATTCATCATGCAA"), '\n', '\n', pairwiseScore('AGCG', 'ATCG'), '\n', '\n', pairwiseScore('ATCG', 'ATCG')

返回:

ATTCGT

||     |

ATCTAT

Score: 2


GATAAATCTGGTCT

 ||  |||  |

CATTCATCATGCAA

Score: 4

AGCG

| ||

ATCG

Score: 4

ATCG

||||

ATCG

Score: 10

但我是在一个人的帮助下创造的。早些时候,这段代码没有这几行代码:

prev = -1
relative_similarity = []


for x in similarity:

    relative_similarity.append(x - prev)
    prev = x

方法如下:

def pairwiseScore(seqA, seqB):

    score = 0
    length = len(seqA)
    similarity = []

    for x in xrange(length):

            if seqA[x] == seqB[x]:
                    if (x >= 1) and (seqA[x - 1] == seqB[x - 1]):
                            score += 3
                            similarity.append(x)
                    else:
                            score += 1
                            similarity.append(x)
            else:
                    score -= 1

    return ''.join((seqA, '\n', ''.join(['|'.rjust(x) for x in similarity]), '\n', seqB, '\n', 'Score: ', str(score)))

并产生了这个输出:

ATTCGT

||    |

ATCTAT

Score: 2

GATAAATCTGGTCT

| |    |     |      |         |

CATTCATCATGCAA

Score: 4


AGCG

| |  |

ATCG

Score: 4


ATCG

|| |  |

ATCG

Score: 10

所以我猜,由.rjust()函数处理的字符,相对于前面的字符,放在输出中-不是放在第一个,而是放在最左边的字符。
为什么会这样?什么内置函数可以格式化输出,使每个字符都按我的需要放置-相对于第一个字符,放置在屏幕最左边。


Tags: infor字符lengthscorerelativeappendsimilarity
2条回答
        str ='Honey'

        print str.rjust(8,'*')

O/p=***亲爱的

语法

              rjust(w,'fillchar')

w=要放在前面的字符宽度数

fillchar=要填充宽度的字符,默认值为空格。。

rjust是一个右对齐字符串的方法,它在对齐后返回一个新字符串。

但是,指定的宽度必须大于原始刺的大小才能进行调整,因此 “蜂蜜”的大小是5,要用3右对齐,必须将宽度设为5+3=8,所以8将移动3个字符9乘4,依此类推。。。

str.rjust()不在任何地方放置任何内容;它返回一个全新的字符串,其中包含旧字符串和左侧的填充。如果由于最终位置中可能出现的其他文本而希望或多或少地填充,那么确保使用较少的填充将是您的问题。也许您应该考虑将填充的添加推迟到输出阶段,以便可以添加正确的量。

print '%-20s%20s' % ('foo', 'bar')

相关问题 更多 >

    热门问题