====== pymarc ====== Atención: existe otro proyecto similar, [[http://sourceforge.net/projects/pymarc/|PyMARC en SourceForge]], by mstetson. Incluye ''MarcBreaker.py'' y ''MarcMaker.py''. pymarc 2.0 / read, write and modify MARC bibliographic data Web: http://pypi.python.org/pypi/pymarc/2.0 Code: http://fruct.us/bzr/pymarc/ **PACKAGE CONTENTS** * constants * exceptions * field * marc8 * marc8_mapping * marcxml * reader * record * writer ===== record ===== class Record(object): A class for representing a MARC record. Each Record object is made up of multiple Field objects. You'll probably want to look at the docs for Field to see how to fully use a Record object. Basic usage: field = Field( tag = '245', indicators = ['0','1'], subfields = [ 'a', 'The pragmatic programmer : ', 'b', 'from journeyman to master /', 'c', 'Andrew Hunt, David Thomas.', ]) record.add_field(field) Or creating a record from a chunk of MARC in transmission format: record = Record(data=chunk) Or getting a record as serialized MARC21. raw = record.as_marc21() You'll normally want to use a MARCReader object to iterate through MARC records in a file. ==== Methods ==== def __init__(self, data=''): Si len(data) > 0 llama a self.decode_marc(data) def __str__(self): In a string context a Record object will return a prettified version of the record in MARCMaker format. See the docstring for Field.__str__ for more information. def __getitem__(self, tag): Allows a shorthand lookup by tag: record['245'] def __iter__(self): Usado para iterar sobre los campos; ver next() def next(self): Usado para iterar sobre los campos def add_field(self, *fields): add_field() will add pymarc.Field objects to a Record object. Optionally you can pass in multiple fields. def get_fields(self, *args): When passed a tag ('245'), get_fields() will return a list of all the fields in a record with a given tag. title = record.get_fields('245') If no fields with the specified tag are found then an empty list is returned. If you are interested in more than one tag you can pass in a list: subjects = record.get_fields('600', '610', '650') If no tag is passed in to fields() a list of all the fields will be returned. def decode_marc(self, marc): decode_marc() accepts a MARC record in transmission format as a a string argument, and will populate the object based on the data found. The Record constructor actually uses decode_marc() behind the scenes when you pass in a chunk of MARC data to it. def as_marc21(self): returns the record serialized as MARC21 Estos métodos devuelven campos específicos: def title(self): def isbn(self): def author(self): ... ===== field ===== class Field(object): Field() pass in the field tag, indicators and subfields for the tag. field = Field( tag = '245', indicators = ['0','1'], subfields = [ NOTE: positions 0, 2, 4, ... are codes; 1, 3, 5, ... are values 'a', 'The pragmatic programmer : ', 'b', 'from journeyman to master /', 'c', 'Andrew Hunt, David Thomas.', ] If you want to create a control field, don't pass in the indicators and use a data parameter rather than a subfields parameter: field = Field(tag='001', data='fol05731351') ==== Methods ==== def __init__(self, tag, indicators=None, subfields=None, data=''): data se usa sólo para campos de control (tag < 010) def __iter__(self): usado para iterar sobre los subcampos (ver next()) Devuelve: self def __str__(self): A Field object in a string context will return the tag, indicators and subfield as a string. This follows MARCMaker format; see [1] and [2] for further reference. Special character mnemonic strings have yet to be implemented (see [3]), so be forewarned. Note also for complete MARCMaker compatibility, you will need to change your newlines to DOS format ('\r\n'). [1] http://www.loc.gov/marc/makrbrkr.html#mechanics [2] http://search.cpan.org/~eijabb/MARC-File-MARCMaker/ [3] http://www.loc.gov/marc/mnemonics.html Devuelve: string def __getitem__(self, subfield): Retrieve the first subfield with a given subfield code in a field: field['a'] Handy for quick lookups. def next(self): usado para iterar sobre los subcampos def value(self): Returns the field as a string without tag, indicators, and subfield indicators. def get_subfields(self, *codes): get_subfields() accepts one or more subfield codes and returns a list of subfield values. The order of the subfield values in the list will be the order that they appear in the field. print field.get_subfields('a') print field.get_subfields('a', 'b', 'z') Devuelve: None o lista de valores, e.g. ['Pérez, Juan,', '1954-'] def add_subfield(self, code, value): Adds a subfield code/value pair to the field. field.add_subfield('u', 'http://www.loc.gov') Devuelve: nada def is_control_field(self): returns true or false if the field is considered a control field. Control fields lack indicators and subfields. Devuelve: boolean def as_marc21(self): used during conversion of a field to raw marc Devuelve: string def format_field(self): Returns the field as a string without tag, indicators, and subfield indicators. Like pymarc.Field.value(), but prettier (adds spaces, formats subject headings). Devuelve: string def is_subject_field(self): Returns True or False if the field is considered a subject field. Used by format_field. Devuelve: boolean {{tag>python marc}}