Amaliy ish mavzusi: marc formatlari asosida metama’lumotlar tizimi qilish

|
Amaliy ish mavzusi: marc formatlari asosida metama’lumotlar tizimi qilish
|
Sana | 08.01.2024 | Hajmi | 51,31 Kb. | | #132459 |
Bog'liq 2-AMALIY MAShG‘ULOT 55555
2-AMALIY MAShG‘ULOT
Amaliy ish mavzusi: MARC formatlari asosida metama’lumotlar tizimi qilish
|
O‘qitish maqsadi:
|
MARC formatlari asosida metama’lumotlar tizimi o’rganish, Avtomatlashtirilgan axborot kutubxona tizimida tizimida ma’lumot almashish prinsipini tushunish.
|
Amaliy Mashg’ulotnii amalga oshirish tartibi:
IRBIS 64 dasturidan UNIMARK formati asosida yuklab olingan ISO fayl NOTEPAD++ yoki shu kabi matn taxrirlovchi dasturda ochi olinadi;
Tashqi muhitga export qilingan bibliografik yozuvlar (ISO fayllar)ni tahlil
ISO fayl tarkibidagi har bir bibliografik yozuv ajratib olinadi;
Ajratib olingan bibliografik yozuv O‘zDST 2785:2013 davlat standarti asosida taxrirlanadi;
Taxrirlangan bibliografik yozuv maxsus jadvalga joylashtiriladi
|
MARC formati bo`yich maydon kodi
|
Metama’lumot nomi
|
Ma’lumot
|
020
|
ISBN raqami
|
978-9943-26-817-3
|
041
|
Nashr tili
|
uzb
|
080
|
BBK
|
904 (075)
|
090
|
Asosiy rubrikator shifri
|
a63.4 xE 18
|
100
|
Muallif
|
No’matulla Xoksoriy
|
245
|
Asosiy sarlavha
|
Boshog’riq suvoriy
|
260
|
Chiqish ma’lumotlari
|
Faktor Press
|
300
|
Fizik tavsif
|
A80 b
|
520
|
Annotatsiya
|
Ertak afsonalar,….
|
700
|
Boshqa mualliflar
|
No’matulla Xoksoriy
|
850
|
Hujjat egasi
|
asarq
|
920
|
Hujjat tili
|
Lotin
|
927
|
Hujjat formati
|
A2
|
001
|
Nazorat raqami
|
0UZ/CR/04400000214
|
005
|
Kiritilgan vaqt
|
02018-10-13 16:44:07
|
900
|
To`liq matn
|
a1;308_310_qora-0041.pdf;6611629;application/pdf
|
002
|
Ishchi saxifa
|
apazk
|
Nazorat shakli:
Kuzatuv, og‘zaki nazorat, savol-javob shakli, test
|
Maksimal ball:
10 ball
|
O‘qituvchi imzosi:
|
import re
def taxrirlash_marc(marc_string):
# MARC formatini tahlil qilish
marc_lines = marc_string.strip().split('\n')
marc_data = {line[:3]: line[4:].strip() for line in marc_lines}
# O'zDST 2785:2013 bo'yicha taxrirlash
marc_data['020'] = 'ISBN raqami\t978-9943-26-817-3'
marc_data['041'] = 'Nashr tili\tuzb'
marc_data['080'] = 'BBK\t904 (075)'
# Qo'shimcha taxrirlar amalga oshing...
# Maxsus jadvalga joylashtirish
jadval = []
for field_code, field_value in marc_data.items():
jadval.append(f'{field_code}\t{field_value}')
# Konsolga chiqarish
print('\n'.join(jadval))
# Sizning ma'lumotlaringizni kiritish
marc_data_1 = """
020\tISBN raqami\t978-9943-26-817-3
041\tNashr tili\tuzb
080\tBBK\t904 (075)
# Qo'shimcha ma'lumotlar...
"""
marc_data_2 = """
020\tISBN raqami\t978-9943-7930-7-1
041\tNashr tili\tuzb
080\tBBK\t903 (074)
# Qo'shimcha ma'lumotlar...
"""
marc_data_3 = """
020\tISBN raqami\t978-9943-03043-6
041\tNashr tili\tlotin
080\tBBK\t901 (064)
# Qo'shimcha ma'lumotlar...
"""
# Dasturni ishga tushirish
taxrirlash_marc(marc_data_1)
print("\n" + "="*50 + "\n")
taxrirlash_marc(marc_data_2)
print("\n" + "="*50 + "\n")
taxrirlash_marc(marc_data_3)
Bu kodda taxrirlash_marc funksiyasi berilgan MARC formatidagi ma'lumotlarni qabul qilib, O'zDST 2785:2013 bo'yicha taxrirlaydi va maxsus jadvalga joylashtiradi. Siz o'zingizning ma'lumotlaringizni marc_data_1, marc_data_2, va marc_data_3
MARC formati bo`yich maydon kodi
|
Metama’lumot nomi
|
Ma’lumot
|
020
|
ISBN raqami
|
978-9943-7930-7-1
|
041
|
Nashr tili
|
uzb
|
080
|
BBK
|
903 (074)
|
090
|
Asosiy rubrikator shifri
|
a63.4 xE 18
|
100
|
Muallif
|
Erix Mariya Remark
|
245
|
Asosiy sarlavha
|
Ortga yo’l
|
260
|
Chiqish ma’lumotlari
|
Faktor Press
|
300
|
Fizik tavsif
|
A168 b
|
520
|
Annotatsiya
|
fantastik,….
|
700
|
Boshqa mualliflar
|
Shavkat Bobomurod
|
850
|
Hujjat egasi
|
asarq
|
920
|
Hujjat tili
|
Lotin
|
927
|
Hujjat formati
|
A2
|
001
|
Nazorat raqami
|
0UZ/CR/04400000314
|
005
|
Kiritilgan vaqt
|
02014-10-13 16:44:07
|
900
|
To`liq matn
|
a1;308_310_sarq-0041.pdf;6611629;application/pdf
|
002
|
Ishchi saxifa
|
apazk
|
Nazorat shakli:
Kuzatuv, og‘zaki nazorat, savol-javob shakli, test
|
Maksimal ball:
10 ball
|
O‘qituvchi imzosi:
|
import re
def taxrirlash_marc(marc_string):
# MARC formatini tahlil qilish
marc_lines = marc_string.strip().split('\n')
marc_data = {line[:3]: line[4:].strip() for line in marc_lines}
# O'zDST 2785:2013 bo'yicha taxrirlash
marc_data['020'] = 'ISBN raqami\t978-9943-26-817-3'
marc_data['041'] = 'Nashr tili\tuzb'
marc_data['080'] = 'BBK\t904 (075)'
# Qo'shimcha taxrirlar amalga oshing...
# Maxsus jadvalga joylashtirish
jadval = []
for field_code, field_value in marc_data.items():
jadval.append(f'{field_code}\t{field_value}')
# Konsolga chiqarish
print('\n'.join(jadval))
# Sizning ma'lumotlaringizni kiritish
marc_data_1 = """
020\tISBN raqami\t978-9943-26-817-3
041\tNashr tili\tuzb
080\tBBK\t904 (075)
# Qo'shimcha ma'lumotlar...
"""
marc_data_2 = """
020\tISBN raqami\t978-9943-7930-7-1
041\tNashr tili\tuzb
080\tBBK\t903 (074)
# Qo'shimcha ma'lumotlar...
"""
marc_data_3 = """
020\tISBN raqami\t978-9943-03043-6
041\tNashr tili\tlotin
080\tBBK\t901 (064)
# Qo'shimcha ma'lumotlar...
"""
# Dasturni ishga tushirish
taxrirlash_marc(marc_data_1)
print("\n" + "="*50 + "\n")
taxrirlash_marc(marc_data_2)
print("\n" + "="*50 + "\n")
taxrirlash_marc(marc_data_3)
Bu kodda taxrirlash_marc funksiyasi berilgan MARC formatidagi ma'lumotlarni qabul qilib, O'zDST 2785:2013 bo'yicha taxrirlaydi va maxsus jadvalga joylashtiradi. Siz o'zingizning ma'lumotlaringizni marc_data_1, marc_data_2, va marc_data_3
MARC formati bo`yich maydon kodi
|
Metama’lumot nomi
|
Ma’lumot
|
020
|
ISBN raqami
|
978-9943-03043-6
|
041
|
Nashr tili
|
lotin
|
080
|
BBK
|
901 (064)
|
090
|
Asosiy rubrikator shifri
|
a63.4 xE 18
|
100
|
Muallif
|
Abdulla Ahmedovich Madaliyev
|
245
|
Asosiy sarlavha
|
Tuya bilan butaloq
|
260
|
Chiqish ma’lumotlari
|
Faktor Press
|
300
|
Fizik tavsif
|
A168 b
|
520
|
Annotatsiya
|
fantastik,….
|
700
|
Boshqa mualliflar
|
Abdulla Ahmedovich Madaliyev
|
850
|
Hujjat egasi
|
roman
|
920
|
Hujjat tili
|
Lotin
|
927
|
Hujjat formati
|
A2
|
001
|
Nazorat raqami
|
0UZ/CR/04400000324
|
005
|
Kiritilgan vaqt
|
02006-10-13 16:44:07
|
900
|
To`liq matn
|
a1;308_310_qizil-0041.pdf;6611629;application/pdf
|
002
|
Ishchi saxifa
|
apazk
|
Nazorat shakli:
Kuzatuv, og‘zaki nazorat, savol-javob shakli, test
|
Maksimal ball:
10 ball
|
O‘qituvchi imzosi:
|
import re
def taxrirlash_marc(marc_string):
# MARC formatini tahlil qilish
marc_lines = marc_string.strip().split('\n')
marc_data = {line[:3]: line[4:].strip() for line in marc_lines}
# O'zDST 2785:2013 bo'yicha taxrirlash
marc_data['020'] = 'ISBN raqami\t978-9943-26-817-3'
marc_data['041'] = 'Nashr tili\tuzb'
marc_data['080'] = 'BBK\t904 (075)'
# Qo'shimcha taxrirlar amalga oshing...
# Maxsus jadvalga joylashtirish
jadval = []
for field_code, field_value in marc_data.items():
jadval.append(f'{field_code}\t{field_value}')
# Konsolga chiqarish
print('\n'.join(jadval))
# Sizning ma'lumotlaringizni kiritish
marc_data_1 = """
020\tISBN raqami\t978-9943-26-817-3
041\tNashr tili\tuzb
080\tBBK\t904 (075)
# Qo'shimcha ma'lumotlar...
"""
marc_data_2 = """
020\tISBN raqami\t978-9943-7930-7-1
041\tNashr tili\tuzb
080\tBBK\t903 (074)
# Qo'shimcha ma'lumotlar...
"""
marc_data_3 = """
020\tISBN raqami\t978-9943-03043-6
041\tNashr tili\tlotin
080\tBBK\t901 (064)
# Qo'shimcha ma'lumotlar...
"""
# Dasturni ishga tushirish
taxrirlash_marc(marc_data_1)
print("\n" + "="*50 + "\n")
taxrirlash_marc(marc_data_2)
print("\n" + "="*50 + "\n")
taxrirlash_marc(marc_data_3)
Bu kodda taxrirlash_marc funksiyasi berilgan MARC formatidagi ma'lumotlarni qabul qilib, O'zDST 2785:2013 bo'yicha taxrirlaydi va maxsus jadvalga joylashtiradi. Siz o'zingizning ma'lumotlaringizni marc_data_1, marc_data_2, va marc_data_3
MARC formati bo`yich maydon kodi
|
Metama’lumot nomi
|
Ma’lumot
|
020
|
ISBN raqami
|
978-9943-8110-2-7
|
041
|
Nashr tili
|
uzb
|
080
|
BBK
|
902 (074)
|
090
|
Asosiy rubrikator shifri
|
a63.4 xE 18
|
100
|
Muallif
|
Edgar Allan Po
|
245
|
Asosiy sarlavha
|
Oyga sayohat
|
260
|
Chiqish ma’lumotlari
|
Silk Road publishing
|
300
|
Fizik tavsif
|
A168 b
|
520
|
Annotatsiya
|
Sarguzash fantastik,….
|
700
|
Boshqa mualliflar
|
Dilshod Qosimov
|
850
|
Hujjat egasi
|
asarq
|
920
|
Hujjat tili
|
Lotin
|
927
|
Hujjat formati
|
A2
|
001
|
Nazorat raqami
|
0UZ/CR/04400000314
|
005
|
Kiritilgan vaqt
|
02014-10-13 16:44:07
|
900
|
To`liq matn
|
a1;308_310_sarq-0041.pdf;6611629;application/pdf
|
002
|
Ishchi saxifa
|
apazk
|
Nazorat shakli:
Kuzatuv, og‘zaki nazorat, savol-javob shakli, test
|
Maksimal ball:
10 ball
|
O‘qituvchi imzosi:
|
import re
def tahlil_qil(iso_fayl):
with open(iso_fayl, 'r', encoding='utf-8') as f:
iso_malumot = f.read()
# Bibliografik yozuvlarni ajratib olish
yozuvlar = re.split(r'\n(?=\d{3}\s)', iso_malumot)
# O‘zDST 2785:2013 standarti bo'yicha taxrirlar
for index, yozuv in enumerate(yozuvlar):
yozuvlar[index] = taxrirlash(yozuv)
# Taxrirlangan yozuvlarni yangi faylda saqlash
yangi_fayl = "taxrirlangan_ISO.txt"
with open(yangi_fayl, 'w', encoding='utf-8') as f:
f.write('\n'.join(yozuvlar))
def taxrirlash(yozuv):
# Bu funksiya O‘zDST 2785:2013 standarti bo'yicha kerakli taxrirlarni amalga oshiradi
# ISBN raqamini taxrirlaymiz
yozuv = re.sub(r'020\s+\|\s+ISBN raqami\s+\|\s+(\d{3}-\d{3,5}-\d{1,7}-\d{1,7}-\d{1,7})', r'020 | ISBN raqami | \1', yozuv)
# Nashr tili taxrirlanadi
yozuv = re.sub(r'041\s+\|\s+Nashr tili\s+\|\s+(uzb)', r'041 | Nashr tili | \1', yozuv)
# BBK kodi taxrirlanadi
yozuv = re.sub(r'080\s+\|\s+BBK\s+\|\s+(\d{3}\s\(\d{3}\))', r'080 | BBK | \1', yozuv)
# Asosiy rubrikator shifri taxrirlanadi
yozuv = re.sub(r'090\s+\|\s+Asosiy rubrikator shifri\s+\|\s+(a\d{2}\.\d\ xE \d{2})', r'090 | Asosiy rubrikator shifri | \1', yozuv)
# Muallif taxrirlanadi
yozuv = re.sub(r'100\s+\|\s+Muallif\s+\|\s+(.+)', r'100 | Muallif | \1', yozuv)
# Asosiy sarlavha taxrirlanadi
yozuv = re.sub(r'245\s+\|\s+Asosiy sarlavha\s+\|\s+(.+)', r'245 | Asosiy sarlavha | \1', yozuv)
# Chiqish ma’lumotlari taxrirlanadi
yozuv = re.sub(r'260\s+\|\s+Chiqish ma’lumotlari\s+\|\s+(.+)', r'260 | Chiqish ma’lumotlari | \1', yozuv)
# Fizik tavsif taxrirlanadi
yozuv = re.sub(r'300\s+\|\s+Fizik tavsif\s+\|\s+(.+)', r'300 | Fizik tavsif | \1', yozuv)
# Annotatsiya taxrirlanadi
yozuv = re.sub(r'520\s+\|\s+Annotatsiya\s+\|\s+(.+)', r'520 | Annotatsiya | \1', yozuv)
# Boshqa mualliflar taxrirlanadi
yozuv = re.sub(r'700\s+\|\s+Boshqa mualliflar\s+\|\s+(.+)', r'700 | Boshqa mualliflar | \1', yozuv)
# Hujjat egasi taxrirlanadi
yozuv = re.sub(r'850\s+\|\s+Hujjat egasi\s+\|\s+(.+)', r'850 | Hujjat egasi | \1', yozuv)
# Hujjat tili taxrirlanadi
yozuv = re.sub(r'920\s+\|\s+Hujjat tili\s+\|\s+(.+)', r'920 | Hujjat tili | \1', yozuv)
# Hujjat formati taxrirlanadi
yozuv = re.sub(r'927\s+\|\s+Hujjat formati\s+\|\s+(.+)', r'927 | Hujjat formati | \1', yozuv)
# Nazorat raqami taxrirlanadi
yozuv = re.sub(r'001\s+\|\s+Nazorat raqami\s+\|\s+(\S+)', r'001 | Nazorat raqami | \1', yozuv)
# Kiritilgan vaqt taxrirlanadi
yozuv = re.sub(r'005\s+\|\s+Kiritilgan vaqt\s+\|\s+(\S+)', r'005 | Kiritilgan vaqt | \1', yozuv)
# To`liq matn taxrirlanadi
yozuv = re.sub(r'900\s+\|\s+To`liq matn\s+\|\s+(.+)', r'900 | To`liq matn | \1', yozuv)
# Ishchi saxifa taxrirlanadi
yozuv = re.sub(r'002\s+\|\s+Ishchi saxifa\s+\|\s+(\S+)', r'002 | Ishchi saxifa | \1', yozuv)
return yozuv
# Dastur boshlanishi
iso_fayl_nomi = "sizning_iso_faylingiz.txt"
tahlil_qil(iso_fayl_nomi)
print("Taxrirlangan ma'lumotlar yangi faylda saqlandi.")
Bu dastur berilgan ma'lumotlarni o'qiydi, har bir bibliografik yozuvni tahlil qiladi va O‘zDST 2785:2013 standarti bo'yicha kerakli taxrirlarni amalga oshiradi. Sizning ISO fayl nomingizni `
Yuqorida berilgan misolni asosida dasturning turini belgilashda Python va Pymarc kutubxonasi ishlatilgan. Bu dastur qo'shimcha o'zgartirishlarni qo'llab-quvvatlaydi:
from pymarc import Record, Field
# Ma'lumotlar
data = """
020 ISBN raqami 978-9943-10-465-5
041 Nashr tili uzb
080 BBK 902 (075)
090 Asosiy rubrikator shifri a63.4 xE 18
100 Muallif Egamberdieva N. A.
245 Asosiy sarlavha aArxeologiya bo`quv qo`llanma h001
260 Chiqish ma’lumotlari aToshkent bFan va texnologiya c2011
300 Fizik tavsif a176 b
520 Annotatsiya O`quv qo`llanmada ibtidoiy davr makonlari, ….
700 Boshqa mualliflar aAsqarov A.
850 Hujjat egasi asarq
920 Hujjat tili alat
927 Hujjat formati a2
001 Nazorat raqami 0UZ/CR/04400000314
"""
# Ma'lumotlarni qismlarga ajratish
lines = data.strip().split('\n')
# MARC record yaratish
marc_record = Record()
# Ajratilgan qismlarni chegaralarga joylash
for line in lines:
parts = line.split('\t')
tag = parts[0]
field = Field(tag=tag)
# Maydon nomi va ma'lumotlarni qo'shish
for part in parts[1:]:
subfield_code = part[0]
subfield_data = part[1:]
field.add_subfield(subfield_code, subfield_data)
# Yaratilgan maydonni yozuvga qo'shish
marc_record.add_field(field)
# MARC formatidagi yozuvni ekranga chiqarish
print(marc_record)
|
| |