<note>
Atención: existe otro proyecto similar, PyMARC en SourceForge, by mstetson. Incluye MarcBreaker.py y MarcMaker.py.
</note>
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
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.
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): ...
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').
[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
python marc