python - significa - unexpected indent traduccion
IndentationError: inesperado unindent ¿POR QUÉ? (3)
Es porque tienes:
def readTTable(fname):
try:
sin un emparejamiento except
bloque después del try:
bloque. Cada try
debe tener al menos una coincidencia except
.
Consulte la sección Errores y excepciones del tutorial de Python.
IndentationError: inesperado unindent ¿POR QUÉ?
#!/usr/bin/python
import sys
class Seq:
def __init__(self, id, adnseq, colen):
self.id = id
self.dna = adnseq
self.cdnlen = colen
self.prot = ""
def __str__(self):
return ">%s/n%s/n" % (self.id, self.prot)
def translate(self, transtable):
self.prot = ""
for i in range(0,len(self.dna),self.cdnlen):
codon = self.dna[i:i+self.cdnlen]
aa = transtable[codon]
self.prot += aa
def parseCommandOptions(cmdargs):
tfname = cmdargs[1]
sfname = cmdargs[2]
return (tfname, sfname)
def readTTable(fname):
try:
ttable = {}
cdnlen = -1
tfile = open(fname, "r")
for line in tfile:
linearr = line.split()
codon = linearr[0]
cdnlen = len(codon)
aa = linearr[1]
ttable[codon] = aa
tfile.close()
return (ttable, cdnlen)
def translateSData(sfname, cdnlen, ttable):
try:
sequences = []
seqf = open(seq_fname, "r")
line = seqf.readline()
while line:
if line[0] == ">":
id = line[1:len(line)].strip()
seq = ""
line = seqf.readline()
while line and line[0] != ''>'':
seq += line.strip()
line = seqf.readline()
sequence = Seq(id, seq, cdnlen)
sequence.translate(ttable)
sequences.append(sequence)
seqf.close()
return sequences
if __name__ == "__main__":
(trans_table_fname, seq_fname) = parseCommandOptions(sys.argv)
(transtable, colen) = readTTable(trans_table_fname)
seqs = translateSData(seq_fname, colen, transtable)
for s in seqs:
print s
Dice:
def translateSeqData(sfname, cdnlen, ttable):
^
IndentationError: unexpected unindent
¿POR QUÉ? He comprobado miles de veces y no puedo encontrar el problema. Solo he usado pestañas y no espacios. Además, a veces pide definir la clase. ¿Eso esta bien?
Este error podría estar en el código anterior al que se informa el error. Consulte Por ejemplo, si tiene un error de sintaxis como se muestra a continuación, obtendrá el error de sangría. El error de sintaxis está en realidad al lado de "excepto" porque debe contener un ":" justo después de él.
try:
#do something
except
print ''error/exception''
def printError(e):
print e
Si cambia "excepto" arriba a "excepto:", el error desaparecerá.
Buena suerte.
no completaste tu declaración de try
Usted necesita y except
allí también.