Python - 让字符串等长

8 投票
3 回答
11480 浏览
提问于 2025-04-18 03:43

我有一段长度不一的RNA序列,最长是22个字符。有些序列比较短。如果某个序列短于22个字符,就在末尾加上“0”,直到长度变成22。

我想用Python来实现这个功能。以下是我的输入:

AAGAUGUGGAAAAAUUGGAAUC

CAGUGGUUUUAUGGUAG

CUCUAGAGGGUUUCUG

UUCAUUCGGC

我期望的输出是,比如最后一行没有22个字符,所以我需要通过加“0”来补齐到22个字符:

UUCAUUCGGC000000000000

但是按照你的指令,我得到的输出是:

AAGAUGUGGAAAAAUU

00000

额外的字符被分到下一行了,而不是在同一行上。

3 个回答

0

你可以试试用while循环。假设你把所有的序列放在一个列表里。

x=['AAGAUGUGGAAAAAUUGGAAUC','CAGUGGUUUUAUGGUAG','CUCUAGAGGGUUUCUG','UUCAUUCGGC']

现在你可以对mRNA序列的长度使用一个while循环。这个循环会检查mRNA的长度,并不断在末尾添加'0',直到序列的长度达到22。

new=''
for mrna in x:
    new=mrna
    while len(new)<22:
        new=new+'0'
    print(new)

while len(mrna)<22:
   mrna+'0'

输出结果将是:

AAGAUGUGGAAAAAUUGGAAUC
CAGUGGUUUUAUGGUAG00000
CUCUAGAGGGUUUCUG000000
UUCAUUCGGC000000000000
9

一个替代 @Aशwini चhaudhary 的回答是:

s = '{0:0<22}'.format(s)

示例

s = 'hello'
s = '{0:0<22}'.format(s)

>>> print s
hello00000000000000000

替代方案

或者像 शwini चhaudhary 提议的那样,简单地:

s = format(s, '0<22')
17

使用 str.ljust 方法:

>>> s = 'foobar'
>>> s.ljust(22, '0')
'foobar0000000000000000'

撰写回答