所以,我有下面的脚本:的Python:字符串格式化其中线长度可以变化
def single_to_tripple(res):
aa = {'R':'ARG','H':'HIS','K':'LYS','D':'ASP','E':'GLU','S':'SER','T':'THR','N':'ASN','Q':'GLN','C':'CYS','U':'SEC','G':'GLY','P':'PRO','A':'ALA','I':'ILE','L':'LEU','M':'MET','F':'PHE','W':'TRP','Y':'TYR','V':'VAL'}
return(aa[res])
seq = 'ASALKDYYAIMGVKPTDDLKTIKTAYRRLARKYHPDVSKEPDAEARFKEVAEAWEVLSDEQRRAEYDQMWQHRNDPQFNRQFHHGDGQSFNAEDFDDIFSSIFGQHARQSRQRPATRGHDIEIEVAVFLEETLTEHKRTISYNLPVYNAFGMIEQEIPKTLNVKIPAGVGNGQRIRLKGQGTPGENGGPNGDLWLVIHIAPHPLFDIVGQDLEIVVPVSPWEAALGAKVTVPTLKESILLTIPPGSQAGQRLRVKGKGLVSKKQTGDLYAVLKIVMPPKPDENTAALWQQLADAQSSFDPRKDWGKA'
length = len(seq)
for i,v in enumerate(xrange(0,len(seq),13)):
line = seq[v:v+13]
out_line = ('{:<3} '*13).format(single_to_tripple(line[0]),single_to_tripple(line[1]),single_to_tripple(line[2]),single_to_tripple(line[3]),single_to_tripple(line[4]),single_to_tripple(line[5]),single_to_tripple(line[6]),single_to_tripple(line[7]),single_to_tripple(line[8]),single_to_tripple(line[9]),single_to_tripple(line[10]),single_to_tripple(line[11]),single_to_tripple(line[12]))
print out_line
我使用的脚本来拼接seq
串每隔13个元素,然后将每个元件从所述拼接字符串中其单字母代码在single_to_tripple
的三位字母代码中。我的数据输出需要包含13个由空格分隔的列。如果拼接不包含13个元素,则会在最后一个拼接处发生问题。我怎样才能抓住这一点,并像往常一样格式化字符串?
我在我的for循环中使用了enumerate
,因为我需要在以后添加行号。
我当前的代码输出:
ALA SER ALA LEU LYS ASP TYR TYR ALA ILE MET GLY VAL
LYS PRO THR ASP ASP LEU LYS THR ILE LYS THR ALA TYR
ARG ARG LEU ALA ARG LYS TYR HIS PRO ASP VAL SER LYS
GLU PRO ASP ALA GLU ALA ARG PHE LYS GLU VAL ALA GLU
ALA TRP GLU VAL LEU SER ASP GLU GLN ARG ARG ALA GLU
TYR ASP GLN MET TRP GLN HIS ARG ASN ASP PRO GLN PHE
ASN ARG GLN PHE HIS HIS GLY ASP GLY GLN SER PHE ASN
ALA GLU ASP PHE ASP ASP ILE PHE SER SER ILE PHE GLY
GLN HIS ALA ARG GLN SER ARG GLN ARG PRO ALA THR ARG
GLY HIS ASP ILE GLU ILE GLU VAL ALA VAL PHE LEU GLU
GLU THR LEU THR GLU HIS LYS ARG THR ILE SER TYR ASN
LEU PRO VAL TYR ASN ALA PHE GLY MET ILE GLU GLN GLU
ILE PRO LYS THR LEU ASN VAL LYS ILE PRO ALA GLY VAL
GLY ASN GLY GLN ARG ILE ARG LEU LYS GLY GLN GLY THR
PRO GLY GLU ASN GLY GLY PRO ASN GLY ASP LEU TRP LEU
VAL ILE HIS ILE ALA PRO HIS PRO LEU PHE ASP ILE VAL
GLY GLN ASP LEU GLU ILE VAL VAL PRO VAL SER PRO TRP
GLU ALA ALA LEU GLY ALA LYS VAL THR VAL PRO THR LEU
LYS GLU SER ILE LEU LEU THR ILE PRO PRO GLY SER GLN
ALA GLY GLN ARG LEU ARG VAL LYS GLY LYS GLY LEU VAL
SER LYS LYS GLN THR GLY ASP LEU TYR ALA VAL LEU LYS
ILE VAL MET PRO PRO LYS PRO ASP GLU ASN THR ALA ALA
LEU TRP GLN GLN LEU ALA ASP ALA GLN SER SER PHE ASP
Traceback (most recent call last):
File "make_seq_res.py", line 10, in <module>
out_line = ('{:<3} '*13).format(single_to_tripple(line[0]),single_to_tripple(line[1]),single_to_tripple(line[2]),single_to_tripple(line[3]),single_to_tripple(line[4]),single_to_tripple(line[5]),single_to_tripple(line[6]),single_to_tripple(line[7]),single_to_tripple(line[8]),single_to_tripple(line[9]),single_to_tripple(line[10]),single_to_tripple(line[11]),single_to_tripple(line[12]))
IndexError: string index out of range
由于字符串总是3个字符长,所以不需要格式化。 *根本*。 – 2013-03-06 12:08:35
@MartijnPieters是的,也是如此。那么,我的例子就是展示如何应用一种格式...... ^^ – poke 2013-03-06 12:10:07
我意识到我可以在发布问题后尽快使用'join'。有时候我觉得很愚蠢。谢谢你的回答,我会接受这个,一旦时间到了。 – Harpal 2013-03-06 12:12:29