辛海濱


摘要:報紙是圖書館館藏的重要組成部分,但由于缺乏系統支持等原因,報紙的日常管理比較復雜。該文通過采用Python語言和第三方Excel操作模
xlwt研究自動生成報紙記到單,用以進行報紙的管理,能夠有效降低管理成本,提高工作效率。
關鍵詞:圖書館;報紙記到單;Python;自動生成
中圖分類號:TP311 文獻標識碼:A
文章編號:1009-3044(2019)33-0041-02
報紙是一種主要的連續出版物,具有內容豐富、出版周期短、傳播速度快和時效性強等特點,是圖書館館藏文獻的重要組成部分。我國報紙種類繁多,2017年,全國共出版報紙1884種。各圖書館根據自身職責和需求,都會訂購不同數量的報紙并陳列于報紙閱覽室供讀者查閱,這為圖書館的報紙管理工作提出了挑戰。
圖書館報紙的管理不同于圖書和期刊。圖書經分編、加工后即可完成人藏,期刊的出版周期通常為月、雙月、旬和季等,到刊后即可完成系統記到。但報紙存在出版頻率快、訂購的種類多、上架及時性要求高、缺乏系統支持等因素的影響,使得其管理更加復雜。報紙因其內容的新聞性、大眾性等特點,成為公共圖書館文獻采購中重要的類型,如2016年廈門圖書館采購中文報紙213種。每日到館的大量報紙需及時記到后,才能進行人藏、上架閱覽、催缺等工作。當前,大多數圖書館業務管理系統如Interlib、ILAS等都沒有進行報紙日常管理的模塊。通過制作報紙記到表,進行手工記到管理是一種報紙管理有效的方法。工作實踐中,圖書館通常采用Excel列出報紙名稱和日期等,按出版周期制作記到表。但是圖書館訂購報紙種類多,且各種報紙出版周期不一,給制作報紙記到表造成了困難。研究開發軟件自動生成報紙記到單,幫助工作人員從復雜的推算、編制過程中解放出來,具有實踐意義,能夠有效提升記到單制作的準確率,提高工作效率。
本文應用Python語言和第三方Excel操作模塊xlwt,在充分了解、分析實際工作中報紙管理需求的基礎上,開發報紙記到單自動生成軟件。
1技術介紹和需求分析
Python語言誕生于1989年,是一種面向對象、解釋型計算機程序設計語言。Pvthon語法簡潔、功能強大、支持跨平臺操作且易于學習。它是一種開放的語言,擁有完備的標準庫,以及大量開發者開發的第三方模塊,這些都為Python提供了強大的功能。
xlwt模塊是第三方Excel文檔寫入模塊,支持Excel文檔創建以及指定表單、指定單元格的格式化寫入操作。datetime模塊和calendar模塊都是python內置的處理日期和時間的模塊。datetime模塊提供了大量處理日期和時間的類和方法,支持格式化輸出與便捷的屬性提取操作。calendar模塊是日歷模塊,提供了標準的類和方法處理來日歷,如便捷的獲取特定月份的天數等。
圖書館每年訂購大量的報紙,報紙的高頻率出版發行以及當前大部分圖書館業務管理系統報紙管理的缺位,使得部分圖書館采用紙質記到單來管理報紙。記到單中每種報紙出版周期不同,需逐項填制,為圖書館工作造成了困難。報紙記到單的自動生成是在當年報紙訂購清單的基礎上,利用PYthon分析各報紙的出版周期,生成報紙記到單,實現記到單制作的自動化。
報紙文檔。報紙文檔是存儲圖書館當年訂購的所有報紙種類的格式化信息的文本文件,一種報紙為一行。文檔中的報紙由序號、郵發代號、報紙名稱和出版周期四項組成。序號為給定報紙的排架號。郵發代號,又稱報刊代號,是郵局為了便于郵遞員識別和讀者訂購為報刊分配的代號。出版周期是報紙的出版時間,周1-7表示每天出版、周1-6表示周一至周六出版、周2.3.5表示周二周三周五出版等等。同時,報紙文檔中報紙信息內容的修改會更改記到單的輸出結果。因此,當報紙名稱、序號和出版周期發生變化時,可直接操作修改報紙文檔信息,新生成的記到單中報紙信息就會更新為最終狀態。
報紙記到單。報紙記到單是由報紙信息和應到日期組成表格,分為標題、表頭和表體三部分。標題部分是記到單的名稱,體現了記到單的適用日期。記到單的表頭部分前面四項對應報紙的信息,分別為序號、郵發代號、報紙名稱和出版周期,后面為相應日期對應的周日,如圖1所示。
圖1中,位于表頭下方的是表體部分。表體中,報紙信息右側部分連續的數字表示日期。日期根據報紙的出版周期選擇填寫,即,若當日該報紙出版則填寫日期,否則不填寫。這樣,記到單中,有日期的單元格表示當日報紙應到,空白則表示當日報紙不出版,簡潔的版面能夠幫助工作人員清晰管理報紙。
2出版周期處理
首先程序讀取報紙文檔,生成報紙列表paper_list,進而從報紙的出版周期項生成出版周期列表,以判斷特定日期,報紙是否出版。報紙文檔中的出版周期為符合特定格式的文字表述,不利于計算機程序識別。以報紙列表為參數,將文字表述的出版周期轉換成由報紙序號和出版日期組成的出版周期列表pubcycle_list,有利于計算機操作判斷報紙出版日期。代碼實現如下:
報紙記到單的表頭部分為對應日期的周日。datetime模塊提供的isoweekday函數能夠通過日期生成對應的周日,生成的周日是用阿拉伯數字表示的,1表示周一、2表示周二等等,以此類推,這種表示方法與出版周期列表pubcycle_list的表示方法相同。
為便于工作人員清晰識別報紙的應到日期,表1所示的記到單中,在應到日期對應的單元格填寫該日期,其余單元格則不填寫。這就要求對特定日期判斷是否出版報紙,為此,首先要通過報紙序號從出版周期列表paper_list中定位出該報紙的出版周期,然后判斷該日期對應的周日是否存在于該報紙的出版周期列表中,若存在,則返回了rue,否則,返回False。代碼實現如下:
3生成記到單
生成Excel格式的記到單,采用了第三方模塊xlwt提供的類和方法。首先建立Excel文檔和表格,將特定月份的報紙應到信息,寫入表格中。限于紙張大小,一個表格只記到半個月的信息。創建Excel文檔與表格的代碼如下:
新創建的表格中帶有頁眉和頁腳內容,通過修改代碼清空頁眉頁腳信息,或者更改為其他內容。
寫入標題并進行格式設置。如圖1所示,表題中的“報紙記到單”前要加上年月,以指明該記到單對應的時期。通過da-t~ime模塊中today函數,獲取當前日期date。記到單中,標題要居中排列,xlwt的XFStyle類提供了單元格格式的設置功能,Alignment類提供了單元格文本對齊方式的設置功能。構建對象alignment和bt_style來設置標題居中對齊。記到單中的標題占據多列,需要合并單元格,xlwt提供了write_merge函數實現多行多列的單元格合并填寫內容的功能。寫入標題的代碼如下:
寫入表體。創建的isPubDay方法實現了通過出版周期判斷特定日期是否出版報紙的功能。表體的寫入分為報紙信息和相應月份日期兩部分,填寫日期時,根據isPubDay方法的判斷結果來決定是否填寫。寫入表體的代碼如下:
row=2
4結束語
隨著社會經濟的發展,公共圖書館的報紙訂購數量也在逐年攀升,工作人員更加依賴通過記到單標記到館、休刊、缺報及催補等,實現報紙的便捷管理。報紙記到單的自動生成能夠有效降低報紙管理成本,提升工作效率,有利于提升讀者服務水平和滿意度。