IndentationError:予期しないインデント解除の理由???
#!/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
それは言います:
def translateSeqData(sfname, cdnlen, ttable):
^
IndentationError: unexpected unindent
どうして?何千回もチェックしましたが、問題が見つかりません。タブのみを使用し、スペースは使用していません。さらに、クラスを定義するように求められることがあります。それは大丈夫ですか?
あなたが持っているからです:
def readTTable(fname):
try:
try:
ブロックの後に一致するexcept
ブロックなし。すべてのtry
には、少なくとも1つの一致するexcept
が必要です。
Pythonチュートリアルの エラーと例外 セクションを参照してください。
try
ステートメントを完了していません。 except
も必要です。
このエラーは、実際にエラーが報告される場所の前のコードにある可能性があります。たとえば、次のような構文エラーがある場合は、インデントエラーが発生します。構文エラーは実際には「例外」の横にあります。これは、直後に「:」が含まれている必要があるためです。
try:
#do something
except
print 'error/exception'
def printError(e):
print e
上記の「except」を「except:」に変更すると、エラーはなくなります。
幸運を。