diff --git "a/a702_\346\237\245\346\211\276\345\217\212\345\241\253\345\205\245\346\274\242\345\255\227\346\250\231\351\237\263.py" "b/a702_\346\237\245\346\211\276\345\217\212\345\241\253\345\205\245\346\274\242\345\255\227\346\250\231\351\237\263.py" index 127faa2..e47ca6d 100644 --- "a/a702_\346\237\245\346\211\276\345\217\212\345\241\253\345\205\245\346\274\242\345\255\227\346\250\231\351\237\263.py" +++ "b/a702_\346\237\245\346\211\276\345\217\212\345\241\253\345\205\245\346\274\242\345\255\227\346\250\231\351\237\263.py" @@ -14,10 +14,10 @@ # 載入自訂模組 from mod_excel_access import ( delete_sheet_by_name, - get_han_ji_khoo, + get_ji_khoo, get_tai_gi_by_han_ji, get_value_by_name, - maintain_han_ji_koo, + maintain_ji_khoo, ) from mod_file_access import load_module_function, save_as_new_file from mod_標音 import PiauIm # 漢字標音物件 @@ -27,7 +27,8 @@ from mod_標音 import split_hong_im_hu_ho # 分解漢字標音 from mod_標音 import split_tai_gi_im_piau # 分解台語音標 from mod_標音 import tlpa_tng_han_ji_piau_im # 台語音標轉台語音標 -from p740_Phua_Im_Ji import PhuaImJi # 破音字物件 + +# from p740_Phua_Im_Ji import PhuaImJi # 破音字物件 # ========================================================================= # 載入環境變數 @@ -174,15 +175,15 @@ def ca_han_ji_thak_im(wb, sheet_name='漢字注音', cell='V3', ue_im_lui_piat=" # 建置自動及人工漢字標音字庫工作表:(1)【漢字庫工作表】;(2)【人工標音字庫工作表】;(3)【缺字表】 piau_im_sheet_name = '標音字庫' delete_sheet_by_name(wb=wb, sheet_name=piau_im_sheet_name) - han_ji_koo_sheet = get_han_ji_khoo(wb=wb, sheet_name=piau_im_sheet_name) + han_ji_koo_sheet = get_ji_khoo(wb=wb, sheet_name=piau_im_sheet_name) jin_kang_piau_im_sheet_name='人工標音字庫' delete_sheet_by_name(wb=wb, sheet_name=jin_kang_piau_im_sheet_name) - jin_kang_piau_im_sheet = get_han_ji_khoo(wb=wb, sheet_name=jin_kang_piau_im_sheet_name) + jin_kang_piau_im_sheet = get_ji_khoo(wb=wb, sheet_name=jin_kang_piau_im_sheet_name) khuat_ji_piau_name = '缺字表' delete_sheet_by_name(wb=wb, sheet_name=khuat_ji_piau_name) - khuat_ji_piau_sheet = get_han_ji_khoo(wb=wb, sheet_name=khuat_ji_piau_name) + khuat_ji_piau_sheet = get_ji_khoo(wb=wb, sheet_name=khuat_ji_piau_name) # 指定【漢字注音】工作表為【作用工作表】 sheet = wb.sheets[sheet_name] @@ -272,7 +273,7 @@ def ca_han_ji_thak_im(wb, sheet_name='漢字注音', cell='V3', ue_im_lui_piat=" han_ji_u_piau_im = True # 將人工輸入的【台語音標】置入【破音字庫】Dict - maintain_han_ji_koo(sheet=jin_kang_piau_im_sheet, + maintain_ji_khoo(sheet=jin_kang_piau_im_sheet, han_ji=han_ji, tai_gi=tai_gi_im_piau, show_msg=False) @@ -300,7 +301,7 @@ def ca_han_ji_thak_im(wb, sheet_name='漢字注音', cell='V3', ue_im_lui_piat=" ue_im_lui_piat=ue_im_lui_piat) # 若【漢字庫】查無此字,登錄至【缺字表】 if not result: - maintain_han_ji_koo(sheet=khuat_ji_piau_sheet, + maintain_ji_khoo(sheet=khuat_ji_piau_sheet, han_ji=han_ji, tai_gi='', show_msg=False) @@ -316,7 +317,7 @@ def ca_han_ji_thak_im(wb, sheet_name='漢字注音', cell='V3', ue_im_lui_piat=" han_ji_u_piau_im = True if han_ji_u_piau_im: - maintain_han_ji_koo(sheet=han_ji_koo_sheet, + maintain_ji_khoo(sheet=han_ji_koo_sheet, han_ji=han_ji, tai_gi=tai_gi_im_piau, show_msg=False) diff --git "a/a706_\346\211\213\345\213\225\346\233\264\346\255\243\346\274\242\345\255\227\346\250\231\351\237\263.py" "b/a706_\346\211\213\345\213\225\346\233\264\346\255\243\346\274\242\345\255\227\346\250\231\351\237\263.py" index 3584021..c12a6c7 100644 --- "a/a706_\346\211\213\345\213\225\346\233\264\346\255\243\346\274\242\345\255\227\346\250\231\351\237\263.py" +++ "b/a706_\346\211\213\345\213\225\346\233\264\346\255\243\346\274\242\345\255\227\346\250\231\351\237\263.py" @@ -20,7 +20,7 @@ from a702_查找及填入漢字標音 import reset_han_ji_cells # 載入自訂模組/函式 -from mod_excel_access import get_han_ji_khoo, get_value_by_name, maintain_han_ji_koo +from mod_excel_access import get_ji_khoo, get_value_by_name, maintain_ji_khoo from mod_file_access import load_module_function, save_as_new_file from mod_標音 import PiauIm # 漢字標音物件 from mod_標音 import hong_im_tng_tai_gi_im_piau # 方音符號轉台語音標 @@ -101,7 +101,7 @@ def jin_kang_piau_im_cu_tai_gi(wb, han_ji: str, jin_kang_piau_im: str, piau_im: ) # 將人工輸入的【台語音標】置入【破音字庫】Dict - maintain_han_ji_koo(sheet=jin_kang_piau_im_sheet, + maintain_ji_khoo(sheet=jin_kang_piau_im_sheet, han_ji=han_ji, tai_gi=tai_gi_im_piau, show_msg=False) @@ -123,7 +123,7 @@ def update_han_ji_piau_im(wb): han_ji_piau_im_sheet = wb.sheets['漢字注音'] han_ji_piau_im_sheet.activate() piau_im_sheet_name = '標音字庫' - piau_im_ji_khoo_sheet = get_han_ji_khoo(wb=wb, sheet_name=piau_im_sheet_name) + piau_im_ji_khoo_sheet = get_ji_khoo(wb=wb, sheet_name=piau_im_sheet_name) # 取得【標音字庫】表格範圍的所有資料 data = piau_im_ji_khoo_sheet.range("A2").expand("table").value diff --git a/mod_excel_access.py b/mod_excel_access.py index 77c30fa..7f902d7 100644 --- a/mod_excel_access.py +++ b/mod_excel_access.py @@ -84,7 +84,7 @@ def get_value_by_name(wb, name): value = None return value -def get_han_ji_khoo(wb, sheet_name="標音字庫"): +def get_ji_khoo(wb, sheet_name="標音字庫"): """ 從 Excel 工作表中取得漢字庫 wb: Excel 活頁簿物件 @@ -101,7 +101,7 @@ def get_han_ji_khoo(wb, sheet_name="標音字庫"): return sheet -def maintain_han_ji_koo(sheet, han_ji, tai_gi, show_msg=False): +def maintain_ji_khoo(sheet, han_ji, tai_gi, show_msg=False): """ 維護【漢字庫】工作表,新增或更新漢字及台語音標 wb: Excel 活頁簿物件 @@ -109,6 +109,8 @@ def maintain_han_ji_koo(sheet, han_ji, tai_gi, show_msg=False): han_ji: 要新增的漢字 tai_gi: 對應的台語音標 """ + # 如果台語音標為空字串,設置為"NA"(或其他標示值) + tai_gi = tai_gi if tai_gi.strip() else "NA" # 取得 A、B、C 欄的所有值 data = sheet.range("A2").expand("table").value @@ -129,20 +131,20 @@ def maintain_han_ji_koo(sheet, han_ji, tai_gi, show_msg=False): if row[0] == han_ji and row[1] == tai_gi: row[2] = (row[2] if isinstance(row[2], (int, float)) else 0) + 1 # 確保存在總數是數字 found = True - if show_msg: print(f"漢字:【{han_ji}({tai_gi})】已存在,總數為: {int(row[2])}") + if show_msg: print(f"漢字:【{han_ji}({tai_gi})】紀錄己有,總數為: {int(row[2])}") break # 若未找到則新增一筆資料 if not found: records.append([han_ji, tai_gi, 1]) - if show_msg: print(f"新增漢字:【{han_ji}({tai_gi})】") + if show_msg: print(f"新增漢字:【{han_ji}】({tai_gi})") # 更新工作表的內容 sheet.range("A2").expand("table").clear_contents() # 清空舊資料 sheet.range("A2").value = records # 寫入更新後的資料 - if show_msg: print(f"已完成【漢字庫】工作表的更新!") + # if show_msg: print(f"已完成【漢字庫】工作表的更新!") def get_tai_gi_by_han_ji(sheet, han_ji, show_msg=False): """ @@ -229,18 +231,42 @@ def get_total_rows_in_sheet(wb, sheet_name): # ========================================================================= # 單元測試 # ========================================================================= +def ut_khuat_ji_piau(wb=None): + """缺字表登錄單元測試""" + wb = xw.Book('Test_Case_Sample.xlsx') + delete_sheet_by_name(wb, "缺字表", show_msg=True) + sheet = get_ji_khoo(wb, "缺字表") + sheet.activate() + + try: + # 當【缺字表】工作表,尚不存在任何查找不到【標音】的【漢字】,新增一筆紀錄 + maintain_ji_khoo(sheet, "銜", "", show_msg=True) + # 當【缺字表】已有一筆紀錄,新增第二筆紀錄 + maintain_ji_khoo(sheet, "暉", "", show_msg=True) + # 在【缺字表】新增第三紀錄 + maintain_ji_khoo(sheet, "霪", "", show_msg=True) + except Exception as e: + print(e) + return EXIT_CODE_UNKNOWN_ERROR + + # 檢查【缺字表】工作表的內容 + for row in sheet.range("A2").expand("table").value: + print(row) + return EXIT_CODE_SUCCESS + + def ut_maintain_han_ji_koo(wb=None): wb = xw.Book('Test_Case_Sample.xlsx') - sheet = get_han_ji_khoo(wb, "漢字庫") + sheet = get_ji_khoo(wb, "漢字庫") # 漢字庫工作表不存在:工作表將新增,且新增一筆紀錄,加入【說】字,【總數】為 1 - maintain_han_ji_koo(sheet, "說", "sue3", show_msg=True) + maintain_ji_khoo(sheet, "說", "sue3", show_msg=True) # 再次要求在漢字庫加入【說】:工作表會被選取,不會為【說】添增新紀錄,但【總數】更新為 2 - maintain_han_ji_koo(sheet, "說", "sue3", show_msg=True) - maintain_han_ji_koo(sheet, "說", "sue3", show_msg=True) - maintain_han_ji_koo(sheet, "說", "uat4", show_msg=True) - maintain_han_ji_koo(sheet, "花", "hua1", show_msg=True) - maintain_han_ji_koo(sheet, "說", "uat4", show_msg=True) + maintain_ji_khoo(sheet, "說", "sue3", show_msg=True) + maintain_ji_khoo(sheet, "說", "sue3", show_msg=True) + maintain_ji_khoo(sheet, "說", "uat4", show_msg=True) + maintain_ji_khoo(sheet, "花", "hua1", show_msg=True) + maintain_ji_khoo(sheet, "說", "uat4", show_msg=True) # 查詢【漢字】的台語音標 print("\n===================================================") @@ -339,10 +365,15 @@ def ut_get_total_rows_in_sheet(wb=None, sheet_name="字庫表"): # 作業程序 # ========================================================================= def process(wb): - return_code = ut_maintain_han_ji_koo(wb=wb) + # --------------------------------------------------------------------- + return_code = ut_khuat_ji_piau(wb=wb) if return_code != EXIT_CODE_SUCCESS: return return_code # --------------------------------------------------------------------- + # return_code = ut_maintain_han_ji_koo(wb=wb) + # if return_code != EXIT_CODE_SUCCESS: + # return return_code + # --------------------------------------------------------------------- # return_code = ut_prepare_working_sheets(wb=wb) # if return_code != EXIT_CODE_SUCCESS: # return return_code diff --git a/output7/Test_Case_Sample.xlsx b/output7/Test_Case_Sample.xlsx new file mode 100644 index 0000000..1be8165 Binary files /dev/null and b/output7/Test_Case_Sample.xlsx differ diff --git "a/output7/\343\200\220\346\262\263\346\264\233\346\226\207\350\256\200\346\263\250\351\237\263-\351\233\205\344\277\227\351\200\232\343\200\221\343\200\212\345\262\263\351\231\275\346\250\223\350\250\230\343\200\213.xlsx" "b/output7/\343\200\220\346\262\263\346\264\233\346\226\207\350\256\200\346\263\250\351\237\263-\351\233\205\344\277\227\351\200\232\343\200\221\343\200\212\345\262\263\351\231\275\346\250\223\350\250\230\343\200\213.xlsx" index 0ecc202..d3668ed 100644 Binary files "a/output7/\343\200\220\346\262\263\346\264\233\346\226\207\350\256\200\346\263\250\351\237\263-\351\233\205\344\277\227\351\200\232\343\200\221\343\200\212\345\262\263\351\231\275\346\250\223\350\250\230\343\200\213.xlsx" and "b/output7/\343\200\220\346\262\263\346\264\233\346\226\207\350\256\200\346\263\250\351\237\263-\351\233\205\344\277\227\351\200\232\343\200\221\343\200\212\345\262\263\351\231\275\346\250\223\350\250\230\343\200\213.xlsx" differ diff --git a/p702_Ca_Han_Ji_Thak_Im.py b/p702_Ca_Han_Ji_Thak_Im.py index efb38b3..7cbb378 100644 --- a/p702_Ca_Han_Ji_Thak_Im.py +++ b/p702_Ca_Han_Ji_Thak_Im.py @@ -4,7 +4,7 @@ import xlwings as xw -from mod_excel_access import get_han_ji_khoo, get_tai_gi_by_han_ji, maintain_han_ji_koo +from mod_excel_access import get_ji_khoo, get_tai_gi_by_han_ji, maintain_ji_khoo from mod_file_access import load_module_function from mod_標音 import PiauIm # 漢字之【漢字標音】轉換物件 from mod_標音 import hong_im_tng_tai_gi_im_piau # 方音符號轉台語音標 @@ -84,9 +84,9 @@ def za_ji_kiat_ko_cut_piau_im(result, han_ji_khoo, piau_im, piau_im_huat): def ca_han_ji_thak_im(wb, sheet_name='漢字注音', cell='V3', ue_im_lui_piat="白話音", han_ji_khoo="河洛話", db_name='Ho_Lok_Ue.db', module_name='mod_河洛話', function_name='han_ji_ca_piau_im'): """查漢字讀音:依【漢字】查找【台語音標】,並依指定之【標音方法】輸出【漢字標音】""" # 取得【漢字庫】工作表物件 - han_ji_koo_sheet = get_han_ji_khoo(wb) - jin_kang_piau_im = get_han_ji_khoo(wb, sheet_name='人工標音字庫') - khuat_ji_piau_sheet = get_han_ji_khoo(wb, sheet_name='缺字表') + han_ji_koo_sheet = get_ji_khoo(wb) + jin_kang_piau_im = get_ji_khoo(wb, sheet_name='人工標音字庫') + khuat_ji_piau_sheet = get_ji_khoo(wb, sheet_name='缺字表') # 動態載入查找函數 han_ji_ca_piau_im = load_module_function(module_name, function_name) @@ -199,7 +199,7 @@ def ca_han_ji_thak_im(wb, sheet_name='漢字注音', cell='V3', ue_im_lui_piat=" # 將人工輸入的【台語音標】置入【標音字庫】Dict # phua_im_ji.ka_phua_im_ji(han_ji, tai_gi_im_piau) - maintain_han_ji_koo(sheet=jin_kang_piau_im, + maintain_ji_khoo(sheet=jin_kang_piau_im, han_ji=han_ji, tai_gi=tai_gi_im_piau, show_msg=False) @@ -227,7 +227,7 @@ def ca_han_ji_thak_im(wb, sheet_name='漢字注音', cell='V3', ue_im_lui_piat=" else: result = han_ji_ca_piau_im(cursor=cursor, han_ji=han_ji, ue_im_lui_piat=ue_im_lui_piat) if not result: - maintain_han_ji_koo(sheet=khuat_ji_piau_sheet, + maintain_ji_khoo(sheet=khuat_ji_piau_sheet, han_ji=han_ji, tai_gi='', show_msg=False) @@ -243,7 +243,7 @@ def ca_han_ji_thak_im(wb, sheet_name='漢字注音', cell='V3', ue_im_lui_piat=" han_ji_u_piau_im = True if han_ji_u_piau_im: - maintain_han_ji_koo(sheet=han_ji_koo_sheet, + maintain_ji_khoo(sheet=han_ji_koo_sheet, han_ji=han_ji, tai_gi=tai_gi_im_piau, show_msg=False) diff --git a/process_log.txt b/process_log.txt index bf7912b..6eb86cc 100644 --- a/process_log.txt +++ b/process_log.txt @@ -2777,3 +2777,49 @@ Traceback (most recent call last): ) Exception: All elements of a 2d list or tuple must be of the same length 2025-01-15 23:36:18,136 - INFO - a702_查找及填入漢字標音.py 程式已執行完畢! +2025-01-16 10:23:33,511 - INFO - 作業開始 +2025-01-16 10:23:33,513 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-16 10:24:45,509 - INFO - 作業開始 +2025-01-16 10:24:45,511 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-16 10:27:13,391 - INFO - 作業開始 +2025-01-16 10:27:13,392 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-16 10:30:05,879 - INFO - 己存檔至路徑:{file_path} +2025-01-16 10:30:05,879 - INFO - a702_查找及填入漢字標音.py 程式已執行完畢! +2025-01-16 10:30:05,879 - INFO - 作業完成! +2025-01-16 10:50:36,845 - INFO - 作業開始 +2025-01-16 10:50:36,846 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-16 10:50:41,728 - ERROR - 作業過程發生未知的異常錯誤: No such file: 'Test_Case_Sample.xlsx' +Traceback (most recent call last): + File "mod_excel_access.py", line 419, in main + result_code = process(wb) + File "mod_excel_access.py", line 362, in process + return_code = ut_khuat_ji_piau(wb=wb) + File "mod_excel_access.py", line 233, in ut_khuat_ji_piau + wb = xw.Book('Test_Case_Sample.xlsx') + File "c:\work\Piau-Im\.venv\Lib\site-packages\xlwings\main.py", line 933, in __init__ + impl = app.books.open( + ~~~~~~~~~~~~~~^ + fullname, + ^^^^^^^^^ + ...<13 lines>... + corrupt_load, + ^^^^^^^^^^^^^ + ).impl + ^ + File "c:\work\Piau-Im\.venv\Lib\site-packages\xlwings\main.py", line 5157, in open + raise FileNotFoundError("No such file: '%s'" % fullname) +FileNotFoundError: No such file: 'Test_Case_Sample.xlsx' +2025-01-16 10:50:41,733 - INFO - a701_作業中活頁簿填入漢字.py 程式已執行完畢! +2025-01-16 10:53:22,021 - INFO - 作業開始 +2025-01-16 10:53:22,022 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-16 11:30:17,597 - INFO - 作業開始 +2025-01-16 11:30:17,598 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-16 11:30:56,788 - INFO - a701_作業中活頁簿填入漢字.py 程式已執行完畢! +2025-01-16 11:31:53,851 - INFO - 作業開始 +2025-01-16 11:31:53,852 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-16 11:31:59,211 - INFO - a701_作業中活頁簿填入漢字.py 程式已執行完畢! +2025-01-16 11:33:23,114 - INFO - 作業開始 +2025-01-16 11:33:23,115 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-16 11:36:19,031 - INFO - 己存檔至路徑:{file_path} +2025-01-16 11:36:19,031 - INFO - a702_查找及填入漢字標音.py 程式已執行完畢! +2025-01-16 11:36:19,031 - INFO - 作業完成!