Mit Hilfe eines Python GEDCOM-Parser: Empfangen schlechten Ausgang (gedcom.Element Instanz bei 0x00 ...)

StackOverflow https://stackoverflow.com/questions/3623349

  •  26-09-2019
  •  | 
  •  

Frage

Ich bin neu in Python, und ich kann die Fledermaus meine Programmiererfahrung nominal sagen off ist im Vergleich zu vielen von Ihnen. Brace sie :)

Ich habe 2 Dateien. Ein GEDCOM-Parser in Python geschrieben, dass ich von einem Benutzer auf dieser Seite (gedcom.py gefunden - http://ilab.cs.byu.edu/cs460/2006w/assignments/program1.html ) und eine einfache GEDCOM-Datei, dass ich von heiner-eichmann.de/gedcom/gedcom.htm gezogen . Ratet mal, wer Mühe Putting 2 und 2 zusammen hat das? Dieser Typ ...

Hier ist ein Code-Snippet, gefolgt von dem, was ich bisher gemacht habe.

class Gedcom:
""" Gedcom parser

This parser is for the Gedcom 5.5 format.  For documentation of
this format, see

http://homepages.rootsweb.com/~pmcbride/gedcom/55gctoc.htm

This parser reads a GEDCOM file and parses it into a set of
elements.  These elements can be accessed via a list (the order of
the list is the same as the order of the elements in the GEDCOM
file), or a dictionary (the key to the dictionary is a unique
identifier that one element can use to point to another element).

"""

def __init__(self,file):
    """ Initialize a Gedcom parser. You must supply a Gedcom file.
    """
    self.__element_list = []
    self.__element_dict = {}
    self.__element_top = Element(-1,"","TOP","",self.__element_dict)
    self.__current_level = -1
    self.__current_element = self.__element_top
    self.__individuals = 0
    self.__parse(file)

def element_list(self):
    """ Return a list of all the elements in the Gedcom file.  The
    elements are in the same order as they appeared in the file.
    """
    return self.__element_list

def element_dict(self):
    """ Return a dictionary of elements from the Gedcom file.  Only
    elements identified by a pointer are listed in the dictionary.  The
    key for the dictionary is the pointer.
    """
    return self.__element_dict

mein kleines Skript

Import gedcom
g = Gedcom ( 'C: \ tmp \ test.ged') // Ich bin auf Windows
drucken g.element_list ()

Von hier erhalte ich eine Reihe von Ausgang „gedcom.Element Instanz bei 0x00 ...“

Ich bin mir nicht sicher, warum ich diesen Ausgang bin zu empfangen. Ich dachte nach der element_list Methode eine formatierte Liste zurückgegeben werden würde. Ich habe diese Website gegoogelt und suchen. Die Antwort starrt mich wahrscheinlich ins Gesicht, aber ich hatte gehofft, dass jemand das Offensichtliche hinweisen könnte.

sehr geschätzt.

War es hilfreich?

Lösung

someclass instance at 0xdeadbeef ist das Ergebnis der Standard __repr__ Methode für Klassen, die nicht über ein definieren, wie scheinbar Klasse gedcom.Element nicht der Fall, so dass das Problem nur mit Ihnen eine Liste solcher Fälle zu drucken. Wenn eine solche Klasse definiert __str__, könnten Sie

for x in g.element_list():
    print x

aber wenn es nicht der Fall ist, das wird auch eine ähnliche Ausgabe geben (wie __str__ „standardmäßig auf“ __repr__). Was wollen Sie auf mit diesen Elementen, z.B. ein Verfahren, dass ihre Klasse funktioniert Angebot?

Andere Tipps

Es ist nichts falsch oder Ungewöhnliches an diesem Ausgang. Da hat gedcom.Element keine __repr__ definiert, wird die Liste Druck zeigt den Standard __repr__. Wenn Sie ein bestimmtes Attribut für jedes Element zugreifen wollen, könnten Sie versuchen:

print [element.some_attribute for element in g.element_list()]

edit: Aha, sah ich die Quelle über Sie zur Verfügung gestellt. Es enthält keine Definition in der Tat einen __str__, aber keinen __repr__. Hier ist, was Sie wollen, am ehesten:

for element in g.element_list()
    print element
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top