Python pymarc - как напечатать тег поля и каждый индикатор и подполе - PullRequest
0 голосов
/ 21 января 2019

У меня есть запись MARC21 во входном файле.Я пытаюсь распечатать его в формате Aleph Sequential.

Как?
Я хочу напечатать номер записи (9 цифр), пробел, тег поля, индикаторы , пробел, букву L, пробел, а затем каждый тег подполя и подполеконкурсы.

Я пытаюсь использовать record.get_fields (), но мне не удается получить индикаторы поля и тег подполя.

Как можно получить и напечатать индикаторы поля?Как напечатать тег ech subfield, а затем значение каждого подполя?

Вот мой код:

from pymarc import MARCReader
from pymarc import Record, Field 

with open('machiavellism_biu_2018.mrc', 'rb') as fh:
    reader = MARCReader(fh, to_unicode=True) 
    # loop 1
    recnum = 0
    for record in reader: 
        # loop 2
        recnum += 1
        for tield_contents in record.get_fields():
            print ('%09d' % recnum,' ',tield_contents.tag,'  ',' L',tield_contents.value())
        ## end loop 2

Пример для вывода:

python pymarc_000002.py

...

000000001   001     L 002547390
000000001   003     L OCoLC
000000001   005     L 20181016125657.0
000000001   008     L 180214t20182018enka     b    001 0 eng
000000001   092     L 302 BER m
000000001   020     L 9781138093317
000000001   035     L (OCoLC)991673448
000000001   040     L eng rda
000000001   041     L eng
000000001   100     L Bereczkei, Tamás lat author
000000001   245     L Machiavellianism : the psychology of manipulation / Tamas Bereczkei.
000000001   264     L London : Routledge, 2018.
000000001   264     L ©2018

1 Ответ

0 голосов
/ 12 февраля 2019

Если поле marc имеет первый или второй индикатор, оно будет проанализировано в атрибутах .indicator1 или .indicator2. Они оба будут определены, даже если в записи marc определен только один, поэтому что-то вроде этого должно работать.

if hasattr(field_contents, 'indicator1'):
       indicator1 = field_contents.indicator1
       indicator2 = field_contents.indicator2
...