• Amaliy Mashg’ulotnii amalga oshirish tartibi
  • Amaliy ish mavzusi: marc formatlari asosida metama’lumotlar tizimi qilish




    Download 51,31 Kb.
    Sana08.01.2024
    Hajmi51,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:

    1. IRBIS 64 dasturidan UNIMARK formati asosida yuklab olingan ISO fayl NOTEPAD++ yoki shu kabi matn taxrirlovchi dasturda ochi olinadi;

    2. Tashqi muhitga export qilingan bibliografik yozuvlar (ISO fayllar)ni tahlil

    3. ISO fayl tarkibidagi har bir bibliografik yozuv ajratib olinadi;

    4. Ajratib olingan bibliografik yozuv O‘zDST 2785:2013 davlat standarti asosida taxrirlanadi;

    5. 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)
    Download 51,31 Kb.




    Download 51,31 Kb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



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

    Download 51,31 Kb.