User Tools

Site Tools


Table of Contents


Atención: existe otro proyecto similar, PyMARC en SourceForge, by mstetson. Incluye y

pymarc 2.0 / read, write and modify MARC bibliographic data




  • constants
  • exceptions
  • field
  • marc8
  • marc8_mapping
  • marcxml
  • reader
  • record
  • writer


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.',
  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.  


  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:
  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 
  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):


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')


  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').
      Devuelve: string
  def __getitem__(self, subfield):
      Retrieve the first subfield with a given subfield code in a field:
      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', '')
      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
pymarc.txt · Last modified: 19/08/2009 00:00 (external edit)