У меня есть небольшая проблема в написании элементов цикла в шаблоне строки следующим образом: когда я пытаюсь создать цепочку строк из трех элементов цикла, я могу напечатать только последний элемент, а не первые два элемента. Я верю, что ошибка связана с некоторыми проблемами в записи файла, но я не мог получить то, что действительно проблема с моим кодом. Итак, если кто-то мог бы вам помочь мне с этим.Как написать файл шаблона String с несколькими элементами цикла?
My SCRIPT:
from string import Template
import os
AMONIOACIDS = {'A': 'ALA', 'C': 'CYS', 'E': 'GLU', 'D': 'ASP', 'G': 'GLY',
'F': 'PHE', 'I': 'ILE', 'H': 'HIS', 'K': 'LYS', 'M': 'MET',
'L': 'LEU', 'N': 'ASN', 'Q': 'GLN', 'P': 'PRO', 'S': 'SER',
'R': 'ARG', 'T': 'THR', 'W': 'TRP', 'V': 'VAL', 'Y': 'TYR'}
rPrS={'C': '102', 'A': '104','H': '12'}
a=[]
b=[]
count=1
for single, third in AMONIOACIDS.iteritems():
for rS,rP in rPrS.iteritems():
if rS == single:
a.append(["s"+str(count)+"=selection(mdl1.chains["+chain+"].residues["+rP+"])"])
b.append(["s"+str(count)+".mutate(residue_type='"+third+"')"])
str='''Loop elements\n'''
for i,j in zip (a,b):
i=''.join(i)
j=''.join(j)
str+='''$i\n'''
str+='''$j\n'''
str=Template(str)
str.substitute(i=i, j=j)
file = open(os.getcwd() + '/' + 'model.py', 'w')
file.write(str.substitute(i=i,j=j))
file.close()
Ожидаемое Ouput:
Loop elements
s1=selection(mdl1.chains[A].residues[104])
s1.mutate(residue_type='ALA')
s2=selection(mdl1.chains[A].residues[102])
s2.mutate(residue_type='CYS')
s3=selection(mdl1.chains[A].residues[12])
s3.mutate(residue_type='HIS')
Что я получаю:
Loop elements
s3=selection(mdl1.chains[A].residues[12])
s3.mutate(residue_type='HIS')
s3=selection(mdl1.chains[A].residues[12])
s3.mutate(residue_type='HIS')
s3=selection(mdl1.chains[A].residues[12])
s3.mutate(residue_type='HIS')
Просто «распечатайте» строку перед преобразованием ее в «Шаблон», и вы увидите свою ошибку. – Selcuk
Спасибо за ваш добрый ответ. Я получаю печатные строки, как показано ниже: Элементы петли $ i $ j $ i $ j $ i $ j. здесь Его печать, следовательно, я не мог получить, откуда начинается ошибка. – DarwinCode
Могу ли я спросить, почему вы пишете код, который вообще пишет этот код? – dodell