Python - 让字符串等长
我有一段长度不一的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'