0

私は次のPythonクラスを持っています:

import sys
import re

class Parser:

    def __init__(self, filename=""):
        self.filename = filename

    def parse(self):

        try:
            table = {}
            fp = open(self.filename, 'r')
            records = fp.readlines()
            for record in records:
                (index, column, value) = record.strip().split()
                value = value[:3]
                table[column] = value

            return table

        except IOError:
            print "Could not open file ", self.filename
            sys.exit(1) 

    def organize_map(self, table={}):

        new_table = {
            'profile_1': [],
            'profile_2': [],
            'profile_3': [],
            'profile_4': []
        }

        for k, v in table.iteritems():

            if re.match("profile1", k):
                new_table['profile_1'].append(int(v))
            elif re.match("profile2", k):
                new_table['profile_2'].append(int(v))
            elif re.match("profile3", k):
                new_table['profile_3'].append(int(v))
            elif re.match("profile4", k):
                new_table['profile_4'].append(int(v)) 


        for k, v in new_table.iteritems():
            v.sort()
            v = v[2:len(v)-2]
            new_table[k] = v
            new_table[k].append(avg(v))
            new_table[k].append(std(v))

        return new_table

parser = Parser()
table = parser.parse()
print parser.organize_map(table)

parser.pyファイルを実行すると、次のようになります。

  File "parser.py", line 94, in <module>
    print parser.organize_map(table)
AttributeError: Parser instance has no attribute 'organize_map'

理由はわかりません...キーワードで定義organized_map()しました...何か考えはありますか?selfサンプル ファイル:

1: profile1_test_1 155700802.32
2: profile1_test_2 156129130.88
3: profile1_test_3 155961744.64
4: profile1_test_4 155917583.6
5: profile1_test_5 156193748.16
6: profile1_test_6 155749778.88
7: profile1_test_7 156040104.72
8: profile1_test_8 156934277.68
9: profile1_test_9 156976866.56
4

1 に答える 1

5

ソース コードでインデントとタブおよびスペースを混在させます。おそらく、Python インタープリターはタブを予想とは異なる方法で解釈します。の定義はorganize_mapタブでインデントされており、最終的には 内のローカル関数として表示される可能性が高くなりますparse

インデントとタブやスペースを混在させないでください。混乱を招くだけです。スクリプトを実行するときにPython の-tパラメーターを使用して、一貫性のないインデントに関する警告を取得することもできます。

python -t myscript.py
于 2013-04-08T21:27:29.373 に答える