Seite 1 von 1

Verfasst: Donnerstag 25. Oktober 2007, 13:15
von BlackJack
So ganz ist mir das immer noch nicht klar und ich habe den Eindruck Du verwechselst output mit input!?

Wenn zu einem Modulnamen mehrere von den anderen Attributen gehören können, dann würde sich ein Dictionary anbieten das den Modulnamen auf eine Liste von Attribut-Dictionaries abbildet.

Verfasst: Freitag 26. Oktober 2007, 07:19
von mulder
hmm .... mal weit ausgeholt

der output ist eine websphere application server ausgabe ueber eine application!

darin sind bloecke die die verschiedenen optionen der deployten application beschreiben. daher kommt auch ein "modulname" doppelt dreifach oder x-fach vor .. weil es eigentlich nur eine menschlich leserliche ausgabe ist!... wenn ich also aus dem output .. welcher eine liste mit tupel ein dictonary mache ... koennte ich nicht auf den eigentlichen zweiten "wert" (zeite zeile) des dritten mal "modulname" vorkommen zugriefen! ..

oder geht das? ... :?:

ich dachte ( und habe es auch bisher nur so benutzt) ein dict inhalt kann man nur ueber den schluesselnamen aufrufen?!

Verfasst: Freitag 26. Oktober 2007, 08:54
von BlackJack
Bei einem Dictionary kannst Du über den Modulnamen auf einen Wert zugreifen. Der "eine" Wert kann ja aber auch eine Liste sein.

Code: Alles auswählen

def parse_modules(lines):
    result = {}
    module_name = None
    module = None
    for line in lines:
        key, value = line.split(':', 1)
        value = value.strip()
        if key == 'Module':
            if module_name is not None:
                result.setdefault(module_name, []).append(module)
            module_name = value
            module = {}
        else:
            module[key] = value
    if module_name is not None:
        result.setdefault(module_name, []).append(module)
    return result


def main():
    in_file = open('test.txt')
    modules = parse_modules(in_file.readlines())
    in_file.close()
    
    print modules
    for module_name, entries in modules.items():
        print module_name
        for entry in entries:
            print '    ' + '-' * 40
            for key, value in entry.items():
                print '    %s: %s' % (key, value)