使用 Pymarc 讀取
書目資料
講者: 王婕瑜
日期: 2021/3/21
OUTLINE
- MARC 簡介
- Pymarc 簡介
- 實作
- Reference
MARC 簡介
MARC
Machine-Readable Cataloging Format
電腦閱讀及處理編目紀錄的格式
1960
美國國會圖書館
1980
UNIMARC
2001
中國機讀編目
1989
全國合作編目系統採用
舉個例子
中國機讀編目格式
010 0 $b精裝$d新台幣170元
100 1986
101 1 chi$ceng
102 tw
200 1 圖書館學槪論$e圖書館服務的基本要素$f傑西.薛拉(Jesse H. Shera)著$g鄭肇陞譯$rT'u shu kuan hs! $aeh kai lun
210 新竹市$c楓城$d民75[1986]
225 1 楓城學術叢書$rFeng ch'eng hsueh shu ts'ung shu
欄位
| 欄位 | 說明 |
|---|---|
| 010 | 國際標準書號(ISBN) |
| 101 | 作品語文 |
| 102 | 出版國別 |
| 200 | 題名及著者敘述項 |
| 210 | 出版項 |
| 225 | 集叢項 |
Pymarc 簡介
Pymarc
安裝
pip install pymarc
處理以 MARC 21 編碼的書目資料
- 閱讀
- 寫入
- 更新
檔案存取
開啟檔案
f.open(file, mode)
存取檔案
f.read()
關閉檔案
f.close()
開啟檔案
f = open(file, mode)
檔案名稱
開啟檔案的模式
| 模式 | 說明 |
|---|---|
| 'r' | 讀取,預設模式 |
| 'w' | 寫入,會覆蓋檔案內容 |
| 'a' | 寫入,若已有內容則附加在末端 |
| 'b' | 按照二進位制位讀取 |
取得全部資料
from pymarc import MARCReader
with open("t.marc", 'rb') as data:
reader = MARCReader(data)
for record in reader:
print(record)欄位
- author
- isbn
- subjects
- location
- notes
- physicaldescription
- publisher
- pubyear
- issn
- issn_title
for record in reader:
print(record['245'])取得某欄位
for record in reader:
# for each field
for f in record.get_fields('650'):
print(f)#for each record
for record in reader:
print(record.title())取得某欄位內某段的資料
for record in reader:
print ("Subfield 'a':", record['245']['a'])
print ("Subfield 'b':", record['245']['b'])
print ("Subfield 'c':", record['245']['c'])010 0 $b精裝$d新台幣170元
200 1 圖書館學槪論$e圖書館服務的基本要素$f傑西.薛拉(Jesse H. Shera)著$g鄭肇陞譯$rT'u shu kuan hs! $aeh kai lun
210 新竹市$c楓城$d民75[1986]
010 0 $b精裝$d新台幣170元
200 1 圖書館學槪論$e圖書館服務的基本要素$f傑西.薛拉(Jesse H. Shera)著$g鄭肇陞譯$rT'u shu kuan hs! $aeh kai lun
210 新竹市$c楓城$d民75[1986]
欄位缺失
try:
print(record['650']['a'])
except:
print('無主題詞')if record['035'] is not None:
print(record['035']['a'])LAB
統計850類書籍的主題
Hint:
主題此欄位可以重複
參考作法
from pymarc import MARCReader
with open('t.mrc', 'rb') as fh:
reader = MARCReader(fh)
for record in reader:
if float(record['094']['a'][0:3]) < 860 and float(record['094']['a'][0:3]) >= 850:
for f in record.get_fields('650'):
print(f['a'])Reference
- 王梅玲 (2011). 機讀編目格式(MARC). Retrieved from: http://techserviceslibrary.blogspot.com/2011/04/marc.html
- carpentries-incubator (2020). PyMARC Basics. Retrieved from: https://carpentries-incubator.github.io/pymarc_basics/aio/index.html
Thanks for listening.
使用 Pymarc 讀取書目資料
By juliewah
使用 Pymarc 讀取書目資料
SIRLA 109-2 This 15 Speech
- 142