From 397e7f6c6848279b372b2fc6d3c1f4d4e06739bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=85=E6=AD=A3=E4=B8=AD?= Date: Tue, 14 Jan 2025 16:41:06 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E5=96=84=20a706=20=E6=89=8B=E5=8B=95?= =?UTF-8?q?=E6=9B=B4=E6=AD=A3=E6=BC=A2=E5=AD=97=E6=A8=99=E9=9F=B3=E4=BD=9C?= =?UTF-8?q?=E6=A5=AD=E7=A8=8B=E5=BA=8F=E5=8F=8A=E8=99=95=E7=90=86=E9=82=8F?= =?UTF-8?q?=E8=BC=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...42\345\255\227\346\250\231\351\237\263.py" | 1 + ...42\345\255\227\346\250\231\351\237\263.py" | 214 +++++-- "mod_\346\250\231\351\237\263.py" | 95 ++- ...\221\343\200\212TestCase\343\200\213.xlsx" | Bin 41071 -> 41143 bytes process_log.txt | 597 ++++++++++++++++++ "\346\262\263\346\264\233\350\251\261" | 0 6 files changed, 839 insertions(+), 68 deletions(-) create mode 100644 "\346\262\263\346\264\233\350\251\261" 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 33bc8cd..fc2595c 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" @@ -93,6 +93,7 @@ def reset_han_ji_cells(wb, sheet_name='漢字注音'): # 逐欄取出漢字處理 for col in range(start_col, end_col): + sheet.range((row-2, col)).value = '' cell_value = sheet.range((row, col)).value if cell_value == 'φ': EOF = True 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 1e8d297..3584021 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" @@ -23,7 +23,9 @@ from mod_excel_access import get_han_ji_khoo, get_value_by_name, maintain_han_ji_koo 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 # 方音符號轉台語音標 from mod_標音 import is_punctuation # 是否為標點符號 +from mod_標音 import split_hong_im_hu_ho # 分解漢字標音 from mod_標音 import tlpa_tng_han_ji_piau_im # 台語音標轉台語音標 # ========================================================================= @@ -62,6 +64,50 @@ def logging_process_step(msg): # ========================================================================= # 本程式主要處理作業程序 # ========================================================================= +def jin_kang_piau_im_cu_tai_gi(wb, han_ji: str, jin_kang_piau_im: str, piau_im: PiauIm, piau_im_huat: str) -> str: + """人工標音取【台語音標】""" + cursor = piau_im.get_cursor() # 取得【資料庫】系統之 cursor 物件 + jin_kang_piau_im_sheet = wb.sheets['人工標音字庫'] # 取得【人工標音字庫】工作表 + + if '〔' in jin_kang_piau_im and '〕' in jin_kang_piau_im: + # 將人工輸入的〔台語音標〕轉換成【方音符號】 + im_piau = jin_kang_piau_im.split('〔')[1].split('〕')[0] + tai_gi_im_piau = im_piau + # 依使用者指定之【標音方法】,將【台語音標】轉換成其所需之【漢字標音】 + han_ji_piau_im = tlpa_tng_han_ji_piau_im( + piau_im=piau_im, + piau_im_huat=piau_im_huat, + tai_gi_im_piau=tai_gi_im_piau + ) + elif '【' in jin_kang_piau_im and '】' in jin_kang_piau_im: + # 將人工輸入的【方音符號】轉換成【台語音標】 + han_ji_piau_im = jin_kang_piau_im.split('【')[1].split('】')[0] + siann, un, tiau = split_hong_im_hu_ho(han_ji_piau_im) + # 依使用者指定之【標音方法】,將【台語音標】轉換成其所需之【漢字標音】 + tai_gi_im_piau = hong_im_tng_tai_gi_im_piau( + siann=siann, + un=un, + tiau=tiau, + cursor=cursor, + )['台語音標'] + else: + # 將人工輸入的【台語音標】,解構為【聲母】、【韻母】、【聲調】 + tai_gi_im_piau = jin_kang_piau_im + # 依指定之【標音方法】,將【台語音標】轉換成其所需之【漢字標音】 + han_ji_piau_im = tlpa_tng_han_ji_piau_im( + piau_im=piau_im, + piau_im_huat=piau_im_huat, + tai_gi_im_piau=tai_gi_im_piau + ) + + # 將人工輸入的【台語音標】置入【破音字庫】Dict + maintain_han_ji_koo(sheet=jin_kang_piau_im_sheet, + han_ji=han_ji, + tai_gi=tai_gi_im_piau, + show_msg=False) + + return han_ji_piau_im + def update_han_ji_piau_im(wb): """ 更新【漢字注音】表中【台語音標】儲存格的內容,依據【標音字庫】中的【校正音標】欄位進行更新,並將【校正音標】覆蓋至原【台語音標】。 @@ -69,12 +115,13 @@ def update_han_ji_piau_im(wb): # 建置 PiauIm 物件,供作漢字拼音轉換作業 han_ji_khoo_field = '漢字庫' han_ji_khoo_name = get_value_by_name(wb=wb, name=han_ji_khoo_field) # 取得【漢字庫】名稱:河洛話、廣韻 - piau_im = PiauIm(han_ji_khoo=han_ji_khoo_name) # 指定漢字自動查找使用的【漢字庫】 - ue_im_lui_piat = get_value_by_name(wb=wb, name='語音類型') + # ue_im_lui_piat = get_value_by_name(wb=wb, name='語音類型') piau_im_huat = get_value_by_name(wb=wb, name='標音方法') # 指定【台語音標】轉換成【漢字標音】的方法 - + # 連接【河洛話】資料庫,並建立 piau_im 物件 + piau_im = PiauIm(han_ji_khoo=han_ji_khoo_name) # 取得工作表 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) @@ -103,61 +150,144 @@ def update_han_ji_piau_im(wb): # 若無需更新的資料,結束函數 if not han_ji_dict: print("【標音字庫】工作表中,【校正音標】欄,均未填入需更新之台語音標!") - return EXIT_CODE_SUCCESS + # return EXIT_CODE_SUCCESS # 逐列處理【漢字注音】表 TOTAL_LINES = int(wb.names['每頁總列數'].refers_to_range.value) - ROWS_PER_LINE = 4 CHARS_PER_ROW = int(wb.names['每列總字數'].refers_to_range.value) + ROWS_PER_LINE = 4 start_row = 5 end_row = start_row + (TOTAL_LINES * ROWS_PER_LINE) start_col = 4 end_col = start_col + CHARS_PER_ROW + # 選擇工作表 + EOF = False # 是否已到達【漢字注音】表的結尾 + line = 1 for row in range(start_row, end_row, ROWS_PER_LINE): + # 設定【作用儲存格】為列首 + Empty_Cells_Total = 0 + han_ji_piau_im_sheet.range((row, 1)).select() + + # 逐欄取出漢字處理 for col in range(start_col, end_col): + msg = "" + status = "" + Si_Piau_Tian = False + # 取得【漢字注音】表中的【漢字】儲存格內容 han_ji_cell = han_ji_piau_im_sheet.range((row, col)) - han_ji = han_ji_cell.value or "" - - if han_ji in han_ji_dict: - original_tai_gi, corrected_tai_gi, total_count, row_index_in_ji_khoo = han_ji_dict[han_ji] - tai_gi_cell = han_ji_piau_im_sheet.range((row - 1, col)) - original_tai_gi_in_sheet = tai_gi_cell.value or "" - jin_kang_piau_im_cell = han_ji_piau_im_sheet.range((row + 2, col)) - jin_kang_piau_im = jin_kang_piau_im_cell.value or "" - han_ji_piau_im_cell = han_ji_piau_im_sheet.range((row + 1, col)) - - # 更新多次,直到總數用完 - if corrected_tai_gi != original_tai_gi_in_sheet and total_count > 0: - if jin_kang_piau_im: - # 若【人工標音】已有標音,則不進行更新 - msg = f"({row}, {xw.utils.col_name(col)}) = {han_ji},已有人工標音【{jin_kang_piau_im}】,故無更新" - else: - tai_gi_cell.value = corrected_tai_gi # 更新【台語音標】儲存格 + tai_gi_cell = han_ji_piau_im_sheet.range((row - 1, col)) + jin_kang_piau_im_cell = han_ji_piau_im_sheet.range((row - 2, col)) + # han_ji = han_ji_cell.value or "" + han_ji = han_ji_cell.value + if han_ji == 'φ': + EOF = True + break + elif han_ji == '\n': + # msg = '---------------------------------------------------' + break + elif han_ji == None or han_ji == "": + print(f"({row}, {xw.utils.col_name(col)}) = 《儲存格無值》") + Empty_Cells_Total += 1 + if Empty_Cells_Total >= 2: + EOF = True + break + else: + continue + else: + # 若不為【標點符號】,則以【漢字】處理 + if is_punctuation(han_ji): + status = f"(標點符號不處理)" + Si_Piau_Tian = True + else: + if han_ji_cell.color == (0, 255, 200) and jin_kang_piau_im_cell.value == tai_gi_cell.value: + jin_kang_piau_im_cell.value = "" + han_ji_cell.color = (255, 255, 255) # 將底色設為【白色】 + han_ji_cell.font.color = (0, 0, 0) # 將文字顏色設為【黑色】 + # 取得【漢字注音】表中的【台語音標】儲存格內容 + tai_gi_cell = han_ji_piau_im_sheet.range((row - 1, col)) + tai_gi_piau_im = tai_gi_cell.value or "" + # 取得【漢字注音】表中的【人工標音】儲存格內容 + jin_kang_piau_im_cell = han_ji_piau_im_sheet.range((row - 2, col)) + jin_kang_piau_im = jin_kang_piau_im_cell.value or "" + # 取得【漢字注音】表中的【漢字標音】儲存格 + han_ji_piau_im_cell = han_ji_piau_im_sheet.range((row + 1, col)) + han_ji_piau_im = han_ji_piau_im_cell.value or "" + + # 將【漢字】儲存格重置:儲存格底色設為【白色】,文字顏色設為【黑色】 + han_ji_cell.color = (255, 255, 255) # 將底色設為【白色】 + han_ji_cell.font.color = (0, 0, 0) # 將文字顏色設為【黑色】 + + # 若【人工標音】儲存格有值,且與【台語音標】儲存格不等值,則自【人工標音】儲存格取值,變更【台語音標】儲存格內容 + status = "" + if jin_kang_piau_im and jin_kang_piau_im != tai_gi_piau_im: + status = "以人工標音更新【台語音標】及【漢字標音】" + # 依【人工標音】取得【台語音標】 + han_ji_piau_im = jin_kang_piau_im_cu_tai_gi(wb=wb, + han_ji=han_ji, + jin_kang_piau_im=jin_kang_piau_im, + piau_im=piau_im, + piau_im_huat=piau_im_huat) + han_ji_piau_im_cell.value = han_ji_piau_im # 填入【漢字標音】儲存格 + tai_gi_cell.value = jin_kang_piau_im # 以【人工標音】更新【台語音標】儲存格 + # 將【漢字】儲存格做醒目標記:儲存格底色設為【黄色】,文字顏色設為【紅色】 han_ji_cell.color = (255, 255, 0) # 將底色設為【黄色】 han_ji_cell.font.color = (255, 0, 0) # 將文字顏色設為【紅色】 - tai_gi_im_piau = corrected_tai_gi - han_ji_piau_im = tlpa_tng_han_ji_piau_im( - piau_im=piau_im, - piau_im_huat=piau_im_huat, - tai_gi_im_piau=tai_gi_im_piau - ) - han_ji_piau_im_cell.value = han_ji_piau_im # 更新【漢字標音】儲存格 - - # 更新【標音字庫】中原【台語音標】欄位內容 - piau_im_ji_khoo_sheet.range(f"B{row_index_in_ji_khoo}").value = corrected_tai_gi - msg = f"({row}, {xw.utils.col_name(col)}) = {han_ji},台語音標由【{original_tai_gi_in_sheet}】改為【{corrected_tai_gi}】/【{han_ji_piau_im}】" - - print(msg) - total_count -= 1 # 減少剩餘更新次數 - - # 更新完畢後,減少【標音字庫】的總數 - piau_im_ji_khoo_sheet.range(f"C{row_index_in_ji_khoo}").value = total_count - if total_count == 0: - print(f"漢字【{han_ji}】的更新次數已用完") - + if han_ji_dict and han_ji in han_ji_dict: + status = "以【標音字庫】的【校正音標】,更新【漢字】儲存格上方之【台語音標】及下方的【漢字標音】" + original_tai_gi, corrected_tai_gi, total_count, row_index_in_ji_khoo = han_ji_dict[han_ji] + original_tai_gi_in_sheet = tai_gi_cell.value or "" + # tai_gi_cell = han_ji_piau_im_sheet.range((row - 1, col)) + # jin_kang_piau_im_cell = han_ji_piau_im_sheet.range((row + 2, col)) + # jin_kang_piau_im = jin_kang_piau_im_cell.value or "" + # han_ji_piau_im_cell = han_ji_piau_im_sheet.range((row + 1, col)) + + # 更新多次,直到總數用完 + if corrected_tai_gi != original_tai_gi_in_sheet and total_count > 0: + if jin_kang_piau_im: + # 若【人工標音】已有標音,則不進行更新 + msg = f"({row}, {xw.utils.col_name(col)}) = {han_ji},已有人工標音【{jin_kang_piau_im}】,不處理" + else: + # 將【漢字】儲存格做醒目標記:儲存格底色設為【黄色】,文字顏色設為【紅色】 + han_ji_cell.color = (0, 255, 200) # 將底色設為【綠色】 + han_ji_cell.font.color = (255, 0, 0) # 將文字顏色設為【紅色】 + + tai_gi_cell.value = corrected_tai_gi # 更新【台語音標】儲存格 + tai_gi_im_piau = corrected_tai_gi + han_ji_piau_im = tlpa_tng_han_ji_piau_im( + piau_im=piau_im, + piau_im_huat=piau_im_huat, + tai_gi_im_piau=tai_gi_im_piau + ) + han_ji_piau_im_cell.value = han_ji_piau_im # 更新【漢字標音】儲存格 + jin_kang_piau_im_cell.value = corrected_tai_gi # 更新【人工標音】儲存格 + + # 更新【標音字庫】中原【台語音標】欄位內容 + piau_im_ji_khoo_sheet.range(f"B{row_index_in_ji_khoo}").value = corrected_tai_gi + msg = f"({row}, {xw.utils.col_name(col)}) = {han_ji},台語音標由【{original_tai_gi_in_sheet}】改為【{corrected_tai_gi}】/【{han_ji_piau_im}】" + + print(msg) + total_count -= 1 # 減少剩餘更新次數 + + # 更新完畢後,減少【標音字庫】的總數 + piau_im_ji_khoo_sheet.range(f"C{row_index_in_ji_khoo}").value = total_count + if total_count == 0: + print(f"漢字【{han_ji}】的更新次數已用完") + + # 每欄結束前處理作業 + if Si_Piau_Tian: + print(f"({row}, {xw.utils.col_name(col)}) = {han_ji}:標點符號不處理") + else: + msg_tail = f":《{status}》" if status else f":不處理" + print(f"({row}, {xw.utils.col_name(col)}) = {han_ji},台語音標【{tai_gi_piau_im}】/【{han_ji_piau_im}】{msg_tail}") + + # 每列結束前處理作業 + line += 1 + if EOF or line > TOTAL_LINES: break + + han_ji_piau_im_sheet.range('A1').select() print("【漢字注音】表的台語音標更新作業已完成") # 作業結束前處理 diff --git "a/mod_\346\250\231\351\237\263.py" "b/mod_\346\250\231\351\237\263.py" index 219f5ad..1b00fd0 100644 --- "a/mod_\346\250\231\351\237\263.py" +++ "b/mod_\346\250\231\351\237\263.py" @@ -144,21 +144,21 @@ def split_hong_im_hu_ho(hong_im_piau_im): return [siann_mu, un_mu, str(tiau_ho)] -def siann_un_tiau_tng_piau_im(piau_im, zu_im_huat, siann_bu, un_bu, tiau_ho): +def siann_un_tiau_tng_piau_im(piau_im, piau_im_huat, siann_bu, un_bu, tiau_ho): """選擇並執行對應的注音方法""" - if zu_im_huat == "雅俗通": + if piau_im_huat == "雅俗通": return piau_im.NST_piau_im(siann_bu, un_bu, tiau_ho) - elif zu_im_huat == "十五音": + elif piau_im_huat == "十五音": return piau_im.SNI_piau_im(siann_bu, un_bu, tiau_ho) - elif zu_im_huat == "白話字": + elif piau_im_huat == "白話字": return piau_im.POJ_piau_im(siann_bu, un_bu, tiau_ho) - elif zu_im_huat == "台羅拼音": + elif piau_im_huat == "台羅拼音": return piau_im.TL_piau_im(siann_bu, un_bu, tiau_ho) - elif zu_im_huat == "閩拼方案": + elif piau_im_huat == "閩拼方案": return piau_im.BP_piau_im(siann_bu, un_bu, tiau_ho) - elif zu_im_huat == "方音符號": + elif piau_im_huat == "方音符號": return piau_im.TPS_piau_im(siann_bu, un_bu, tiau_ho) - elif zu_im_huat == "台語音標": + elif piau_im_huat == "台語音標": siann = piau_im.Siann_Bu_Dict[siann_bu]["台語音標"] or "" un = piau_im.Un_Bu_Dict[un_bu]["台語音標"] return f"{siann}{un}{tiau_ho}" @@ -378,9 +378,11 @@ class PiauIm: "\u02D9": 8, } - def __init__(self, han_ji_khoo="漢語標音"): + # def __init__(self, han_ji_khoo="漢語標音"): + def __init__(self, han_ji_khoo="漢語標音", cursor=None): self.Siann_Bu_Dict = None self.Un_Bu_Dict = None + self.cursor = cursor # 將 cursor 存入物件屬性 self.init_piau_im_dict(han_ji_khoo) self.TL_pattern1 = re.compile(r"(uai|uan|uah|ueh|ee|ei|oo)", re.I) self.TL_pattern2 = re.compile(r"(o|e|a|u|i|n|m)", re.I) @@ -388,6 +390,20 @@ def __init__(self, han_ji_khoo="漢語標音"): self.POJ_pattern2 = re.compile(r"(o|e|a|u|i|n|m)", re.I) self.HongImTiauHu = re.compile(r"ˋ|˪|ˊ|˫|\u02D9", re.I) + def set_cursor(self, cursor): + """ + 設定資料庫 cursor 物件 + :param cursor: 資料庫 cursor 物件 + """ + self.cursor = cursor + + def get_cursor(self): + """ + 取得資料庫 cursor 物件 + :return: cursor 物件 + """ + return self.cursor + def _init_siann_bu_dict(self, cursor): # 執行 SQL 查詢 cursor.execute("SELECT * FROM 聲母對照表") @@ -411,16 +427,45 @@ def _init_siann_bu_dict(self, cursor): } return siann_bu_dict - def _init_un_bu_dict(self, cursor): - # 執行 SQL 查詢 - cursor.execute("SELECT * FROM 韻母對照表") - - # 獲取所有資料 - rows = cursor.fetchall() + def _init_siann_bu_dict(self): + """ + 初始化聲母對照表,使用 cursor 進行 SQL 查詢 + """ + if not self.cursor: + raise ValueError("資料庫 cursor 未設定,無法執行查詢") + self.cursor.execute("SELECT * FROM 聲母對照表") + rows = self.cursor.fetchall() + #------------------------------------------------------------------ + # 從查詢結果中提取資料並將其整理成一個字典 + #------------------------------------------------------------------ + # siann_bu_dict = {row[1]: {'台語音標': row[1], '國際音標': row[2]} for row in rows} + siann_bu_dict = {} # 初始化字典 + for row in rows: + siann_bu_dict[row[1]] = { + '台語音標': row[1], + '國際音標': row[2], + '台羅拼音': row[3], + '白話字': row[4], + '閩拼方案': row[5], + '方音符號': row[6], + '十五音': row[7], + } + return siann_bu_dict + def _init_un_bu_dict(self): + """ + 初始化韻母對照表,使用 cursor 進行 SQL 查詢 + """ + if not self.cursor: + raise ValueError("資料庫 cursor 未設定,無法執行查詢") + self.cursor.execute("SELECT * FROM 韻母對照表") + rows = self.cursor.fetchall() + #------------------------------------------------------------------ + # 設定【韻母對照表】用字典 + # un_bu_dict = {row[1]: {'台語音標': row[1], '國際音標': row[2]} for row in rows} + #------------------------------------------------------------------ # 初始化字典 un_bu_dict = {} - # 從查詢結果中提取資料並將其整理成一個字典 for row in rows: un_bu_dict[row[1]] = { @@ -437,17 +482,15 @@ def _init_un_bu_dict(self, cursor): return un_bu_dict def init_piau_im_dict(self, han_ji_khoo): - if han_ji_khoo == "河洛話": - db_name = 'Ho_Lok_Ue.db' - elif han_ji_khoo == "廣韻": - db_name = 'Kong_Un.db' - else: - db_name = 'Han_Ji_Piau_Im.db' - + """ + 初始化聲母與韻母字典 + :param han_ji_khoo: 標音類型 + """ + db_name = 'Ho_Lok_Ue.db' if han_ji_khoo == "河洛話" else 'Han_Ji_Piau_Im.db' with sqlite3.connect(db_name) as conn: - cursor = conn.cursor() - self.Siann_Bu_Dict = self._init_siann_bu_dict(cursor) - self.Un_Bu_Dict = self._init_un_bu_dict(cursor) + self.cursor = conn.cursor() if not self.cursor else self.cursor + self.Siann_Bu_Dict = self._init_siann_bu_dict() + self.Un_Bu_Dict = self._init_un_bu_dict() #================================================================ # 在韻母加調號:白話字(POJ)與台羅(TL)同 diff --git "a/output7/\343\200\220\346\262\263\346\264\233\347\231\275\350\251\261\346\263\250\351\237\263-\351\233\205\344\277\227\351\200\232\343\200\221\343\200\212TestCase\343\200\213.xlsx" "b/output7/\343\200\220\346\262\263\346\264\233\347\231\275\350\251\261\346\263\250\351\237\263-\351\233\205\344\277\227\351\200\232\343\200\221\343\200\212TestCase\343\200\213.xlsx" index 715fb85668b97ff737ce6181071beb705c42be99..25dabf1a58982226c7d19f742a6c6418956779b1 100644 GIT binary patch delta 26970 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... + tiau_ho + ) + File "c:\work\Piau-Im\mod_標音.py", line 150, in siann_un_tiau_tng_piau_im + return piau_im.NST_piau_im(siann_bu, un_bu, tiau_ho) + ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "c:\work\Piau-Im\mod_標音.py", line 768, in NST_piau_im + un = self.Un_Bu_Dict[un_bu][piau_im_huat] + ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ +KeyError: '十五音' +2025-01-14 11:29:49,747 - INFO - 釋放 Excel 資源,處理完成。 +2025-01-14 11:31:10,533 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 11:32:49,740 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 11:34:16,980 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 11:34:47,587 - ERROR - 執行過程中發生未知錯誤: '十五音' +Traceback (most recent call last): + File "a706_手動更正漢字標音.py", line 295, in main + result_code = process(wb) + File "a706_手動更正漢字標音.py", line 254, in process + return_code = update_han_ji_piau_im(wb=wb) + File "a706_手動更正漢字標音.py", line 186, in update_han_ji_piau_im + han_ji_piau_im = jin_kang_piau_im_cu_tai_gi(wb=wb, + han_ji=han_ji, + jin_kang_piau_im=jin_kang_piau_im, + piau_im=piau_im, + piau_im_huat=piau_im_huat) + File "a706_手動更正漢字標音.py", line 96, in jin_kang_piau_im_cu_tai_gi + han_ji_piau_im = tlpa_tng_han_ji_piau_im( + piau_im=piau_im, + piau_im_huat=piau_im_huat, + tai_gi_im_piau=tai_gi_im_piau + ) + File "c:\work\Piau-Im\mod_標音.py", line 177, in tlpa_tng_han_ji_piau_im + han_ji_piau_im = siann_un_tiau_tng_piau_im( + piau_im, + ...<3 lines>... + tiau_ho + ) + File "c:\work\Piau-Im\mod_標音.py", line 150, in siann_un_tiau_tng_piau_im + return piau_im.NST_piau_im(siann_bu, un_bu, tiau_ho) + ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "c:\work\Piau-Im\mod_標音.py", line 768, in NST_piau_im + un = self.Un_Bu_Dict[un_bu][piau_im_huat] + ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ +KeyError: '十五音' +2025-01-14 11:34:47,721 - INFO - 釋放 Excel 資源,處理完成。 +2025-01-14 11:36:29,641 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 11:36:52,539 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 11:37:02,865 - ERROR - 執行過程中發生未知錯誤: '十五音' +Traceback (most recent call last): + File "a706_手動更正漢字標音.py", line 295, in main + result_code = process(wb) + File "a706_手動更正漢字標音.py", line 254, in process + return_code = update_han_ji_piau_im(wb=wb) + File "a706_手動更正漢字標音.py", line 186, in update_han_ji_piau_im + han_ji_piau_im = jin_kang_piau_im_cu_tai_gi(wb=wb, + han_ji=han_ji, + jin_kang_piau_im=jin_kang_piau_im, + piau_im=piau_im, + piau_im_huat=piau_im_huat) + File "a706_手動更正漢字標音.py", line 96, in jin_kang_piau_im_cu_tai_gi + han_ji_piau_im = tlpa_tng_han_ji_piau_im( + piau_im=piau_im, + piau_im_huat=piau_im_huat, + tai_gi_im_piau=tai_gi_im_piau + ) + File "c:\work\Piau-Im\mod_標音.py", line 177, in tlpa_tng_han_ji_piau_im + han_ji_piau_im = siann_un_tiau_tng_piau_im( + piau_im, + ...<3 lines>... + tiau_ho + ) + File "c:\work\Piau-Im\mod_標音.py", line 150, in siann_un_tiau_tng_piau_im + return piau_im.NST_piau_im(siann_bu, un_bu, tiau_ho) + ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "c:\work\Piau-Im\mod_標音.py", line 768, in NST_piau_im + un = self.Un_Bu_Dict[un_bu][piau_im_huat] + ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ +KeyError: '十五音' +2025-01-14 11:37:03,202 - INFO - 釋放 Excel 資源,處理完成。 +2025-01-14 11:37:46,652 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 11:41:33,411 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 11:43:27,461 - ERROR - 執行過程中發生未知錯誤: '十五音' +Traceback (most recent call last): + File "a706_手動更正漢字標音.py", line 295, in main + result_code = process(wb) + File "a706_手動更正漢字標音.py", line 254, in process + return_code = update_han_ji_piau_im(wb=wb) + File "a706_手動更正漢字標音.py", line 186, in update_han_ji_piau_im + han_ji_piau_im = jin_kang_piau_im_cu_tai_gi(wb=wb, + han_ji=han_ji, + jin_kang_piau_im=jin_kang_piau_im, + piau_im=piau_im, + piau_im_huat=piau_im_huat) + File "a706_手動更正漢字標音.py", line 96, in jin_kang_piau_im_cu_tai_gi + han_ji_piau_im = tlpa_tng_han_ji_piau_im( + piau_im=piau_im, + piau_im_huat=piau_im_huat, + tai_gi_im_piau=tai_gi_im_piau + ) + File "c:\work\Piau-Im\mod_標音.py", line 177, in tlpa_tng_han_ji_piau_im + han_ji_piau_im = siann_un_tiau_tng_piau_im( + piau_im, + ...<3 lines>... + tiau_ho + ) + File "c:\work\Piau-Im\mod_標音.py", line 150, in siann_un_tiau_tng_piau_im + return piau_im.NST_piau_im(siann_bu, un_bu, tiau_ho) + ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "c:\work\Piau-Im\mod_標音.py", line 768, in NST_piau_im + un = self.Un_Bu_Dict[un_bu][piau_im_huat] + ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ +KeyError: '十五音' +2025-01-14 11:43:27,613 - INFO - 釋放 Excel 資源,處理完成。 +2025-01-14 11:45:14,303 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 11:47:04,533 - ERROR - 執行過程中發生未知錯誤: '十五音' +Traceback (most recent call last): + File "a706_手動更正漢字標音.py", line 295, in main + result_code = process(wb) + File "a706_手動更正漢字標音.py", line 254, in process + return_code = update_han_ji_piau_im(wb=wb) + File "a706_手動更正漢字標音.py", line 186, in update_han_ji_piau_im + han_ji_piau_im = jin_kang_piau_im_cu_tai_gi(wb=wb, + han_ji=han_ji, + jin_kang_piau_im=jin_kang_piau_im, + piau_im=piau_im, + piau_im_huat=piau_im_huat) + File "a706_手動更正漢字標音.py", line 96, in jin_kang_piau_im_cu_tai_gi + han_ji_piau_im = tlpa_tng_han_ji_piau_im( + piau_im=piau_im, + piau_im_huat=piau_im_huat, + tai_gi_im_piau=tai_gi_im_piau + ) + File "c:\work\Piau-Im\mod_標音.py", line 177, in tlpa_tng_han_ji_piau_im + han_ji_piau_im = siann_un_tiau_tng_piau_im( + piau_im, + ...<3 lines>... + tiau_ho + ) + File "c:\work\Piau-Im\mod_標音.py", line 150, in siann_un_tiau_tng_piau_im + return piau_im.NST_piau_im(siann_bu, un_bu, tiau_ho) + ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "c:\work\Piau-Im\mod_標音.py", line 768, in NST_piau_im + un = self.Un_Bu_Dict[un_bu][piau_im_huat] + ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ +KeyError: '十五音' +2025-01-14 11:47:04,663 - INFO - 釋放 Excel 資源,處理完成。 +2025-01-14 11:59:14,454 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 11:59:14,511 - ERROR - 執行過程中發生未知錯誤: no such table: 聲母對照表 +Traceback (most recent call last): + File "a706_手動更正漢字標音.py", line 298, in main + result_code = process(wb) + File "a706_手動更正漢字標音.py", line 257, in process + return_code = update_han_ji_piau_im(wb=wb) + File "a706_手動更正漢字標音.py", line 122, in update_han_ji_piau_im + piau_im = PiauIm(han_ji_khoo=han_ji_khoo_name, cursor=cursor) + File "c:\work\Piau-Im\mod_標音.py", line 386, in __init__ + self.init_piau_im_dict(han_ji_khoo) + ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^ + File "c:\work\Piau-Im\mod_標音.py", line 474, in init_piau_im_dict + self.Siann_Bu_Dict = self._init_siann_bu_dict() + ~~~~~~~~~~~~~~~~~~~~~~~~^^ + File "c:\work\Piau-Im\mod_標音.py", line 436, in _init_siann_bu_dict + self.cursor.execute("SELECT * FROM 聲母對照表") + ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +sqlite3.OperationalError: no such table: 聲母對照表 +2025-01-14 11:59:14,636 - INFO - 釋放 Excel 資源,處理完成。 +2025-01-14 11:59:30,481 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 11:59:30,537 - ERROR - 執行過程中發生未知錯誤: no such table: 聲母對照表 +Traceback (most recent call last): + File "a706_手動更正漢字標音.py", line 298, in main + result_code = process(wb) + File "a706_手動更正漢字標音.py", line 257, in process + return_code = update_han_ji_piau_im(wb=wb) + File "a706_手動更正漢字標音.py", line 122, in update_han_ji_piau_im + piau_im = PiauIm(han_ji_khoo=han_ji_khoo_name, cursor=cursor) + File "c:\work\Piau-Im\mod_標音.py", line 386, in __init__ + self.init_piau_im_dict(han_ji_khoo) + ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^ + File "c:\work\Piau-Im\mod_標音.py", line 474, in init_piau_im_dict + self.Siann_Bu_Dict = self._init_siann_bu_dict() + ~~~~~~~~~~~~~~~~~~~~~~~~^^ + File "c:\work\Piau-Im\mod_標音.py", line 436, in _init_siann_bu_dict + self.cursor.execute("SELECT * FROM 聲母對照表") + ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +sqlite3.OperationalError: no such table: 聲母對照表 +2025-01-14 11:59:30,659 - INFO - 釋放 Excel 資源,處理完成。 +2025-01-14 12:00:47,648 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 12:03:19,614 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 12:09:21,791 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 12:27:50,786 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 12:27:51,017 - ERROR - 執行過程中發生未知錯誤: cannot access local variable 'han_ji_piau_im' where it is not associated with a value +Traceback (most recent call last): + File "a706_手動更正漢字標音.py", line 302, in main + result_code = process(wb) + File "a706_手動更正漢字標音.py", line 261, in process + return_code = update_han_ji_piau_im(wb=wb) + File "a706_手動更正漢字標音.py", line 241, in update_han_ji_piau_im + print(f"({row}, {xw.utils.col_name(col)}) = {han_ji},台語音標【{tai_gi_piau_im}】/【{han_ji_piau_im}】{msg_tail}") + ^^^^^^^^^^^^^^ +UnboundLocalError: cannot access local variable 'han_ji_piau_im' where it is not associated with a value +2025-01-14 12:27:51,163 - INFO - 釋放 Excel 資源,處理完成。 +2025-01-14 12:28:16,114 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 12:28:16,348 - ERROR - 執行過程中發生未知錯誤: cannot access local variable 'han_ji_piau_im' where it is not associated with a value +Traceback (most recent call last): + File "a706_手動更正漢字標音.py", line 302, in main + result_code = process(wb) + File "a706_手動更正漢字標音.py", line 261, in process + return_code = update_han_ji_piau_im(wb=wb) + File "a706_手動更正漢字標音.py", line 241, in update_han_ji_piau_im + print(f"({row}, {xw.utils.col_name(col)}) = {han_ji},台語音標【{tai_gi_piau_im}】/【{han_ji_piau_im}】{msg_tail}") + ^^^^^^^^^^^^^^ +UnboundLocalError: cannot access local variable 'han_ji_piau_im' where it is not associated with a value +2025-01-14 12:28:16,489 - INFO - 釋放 Excel 資源,處理完成。 +2025-01-14 12:30:08,149 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 12:30:47,326 - ERROR - 執行過程中發生未知錯誤: cannot access local variable 'han_ji_piau_im' where it is not associated with a value +Traceback (most recent call last): + File "a706_手動更正漢字標音.py", line 302, in main + result_code = process(wb) + File "a706_手動更正漢字標音.py", line 261, in process + return_code = update_han_ji_piau_im(wb=wb) + File "a706_手動更正漢字標音.py", line 241, in update_han_ji_piau_im + print(f"({row}, {xw.utils.col_name(col)}) = {han_ji},台語音標【{tai_gi_piau_im}】/【{han_ji_piau_im}】{msg_tail}") + ^^^^^^^^^^^^^^ +UnboundLocalError: cannot access local variable 'han_ji_piau_im' where it is not associated with a value +2025-01-14 12:30:47,481 - INFO - 釋放 Excel 資源,處理完成。 +2025-01-14 12:32:19,499 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 13:11:00,041 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 13:11:00,241 - ERROR - 執行過程中發生未知錯誤: (-2147352567, '發生例外狀況。', (0, 'Microsoft Excel', 'Class Range 的 Select 方法失敗', 'xlmain11.chm', 0, -2146827284), None) +Traceback (most recent call last): + File "a706_手動更正漢字標音.py", line 321, in main + result_code = process(wb) + File "a706_手動更正漢字標音.py", line 280, in process + return_code = update_han_ji_piau_im(wb=wb) + File "a706_手動更正漢字標音.py", line 172, in update_han_ji_piau_im + sheet.range((row, 1)).select() + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^ + File "c:\work\Piau-Im\.venv\Lib\site-packages\xlwings\main.py", line 2815, in select + self.impl.select() + ~~~~~~~~~~~~~~~~^^ + File "c:\work\Piau-Im\.venv\Lib\site-packages\xlwings\_xlwindows.py", line 1500, in select + return self.xl.Select() + ~~~~~~~~~~~~~~^^ + File "c:\work\Piau-Im\.venv\Lib\site-packages\xlwings\_xlwindows.py", line 122, in __call__ + v = self.__method(*args, **kwargs) + File ">", line 2, in Select + File "c:\work\Piau-Im\.venv\Lib\site-packages\win32com\client\dynamic.py", line 355, in _ApplyTypes_ + result = self._oleobj_.InvokeTypes( + *(dispid, LCID, wFlags, retType, argTypes) + args + ) +pywintypes.com_error: (-2147352567, '發生例外狀況。', (0, 'Microsoft Excel', 'Class Range 的 Select 方法失敗', 'xlmain11.chm', 0, -2146827284), None) +2025-01-14 13:11:00,404 - INFO - 釋放 Excel 資源,處理完成。 +2025-01-14 13:11:23,031 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 13:11:23,212 - ERROR - 執行過程中發生未知錯誤: (-2147352567, '發生例外狀況。', (0, 'Microsoft Excel', 'Class Range 的 Select 方法失敗', 'xlmain11.chm', 0, -2146827284), None) +Traceback (most recent call last): + File "a706_手動更正漢字標音.py", line 321, in main + result_code = process(wb) + File "a706_手動更正漢字標音.py", line 280, in process + return_code = update_han_ji_piau_im(wb=wb) + File "a706_手動更正漢字標音.py", line 172, in update_han_ji_piau_im + sheet.range((row, 1)).select() + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^ + File "c:\work\Piau-Im\.venv\Lib\site-packages\xlwings\main.py", line 2815, in select + self.impl.select() + ~~~~~~~~~~~~~~~~^^ + File "c:\work\Piau-Im\.venv\Lib\site-packages\xlwings\_xlwindows.py", line 1500, in select + return self.xl.Select() + ~~~~~~~~~~~~~~^^ + File "c:\work\Piau-Im\.venv\Lib\site-packages\xlwings\_xlwindows.py", line 122, in __call__ + v = self.__method(*args, **kwargs) + File ">", line 2, in Select + File "c:\work\Piau-Im\.venv\Lib\site-packages\win32com\client\dynamic.py", line 355, in _ApplyTypes_ + result = self._oleobj_.InvokeTypes( + *(dispid, LCID, wFlags, retType, argTypes) + args + ) +pywintypes.com_error: (-2147352567, '發生例外狀況。', (0, 'Microsoft Excel', 'Class Range 的 Select 方法失敗', 'xlmain11.chm', 0, -2146827284), None) +2025-01-14 13:11:23,339 - INFO - 釋放 Excel 資源,處理完成。 +2025-01-14 13:12:07,419 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 13:12:21,870 - ERROR - 執行過程中發生未知錯誤: (-2147352567, '發生例外狀況。', (0, 'Microsoft Excel', 'Class Range 的 Select 方法失敗', 'xlmain11.chm', 0, -2146827284), None) +Traceback (most recent call last): + File "a706_手動更正漢字標音.py", line 321, in main + result_code = process(wb) + File "a706_手動更正漢字標音.py", line 280, in process + return_code = update_han_ji_piau_im(wb=wb) + File "a706_手動更正漢字標音.py", line 172, in update_han_ji_piau_im + sheet.range((row, 1)).select() + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^ + File "c:\work\Piau-Im\.venv\Lib\site-packages\xlwings\main.py", line 2815, in select + self.impl.select() + ~~~~~~~~~~~~~~~~^^ + File "c:\work\Piau-Im\.venv\Lib\site-packages\xlwings\_xlwindows.py", line 1500, in select + return self.xl.Select() + ~~~~~~~~~~~~~~^^ + File "c:\work\Piau-Im\.venv\Lib\site-packages\xlwings\_xlwindows.py", line 122, in __call__ + v = self.__method(*args, **kwargs) + File ">", line 2, in Select + File "c:\work\Piau-Im\.venv\Lib\site-packages\win32com\client\dynamic.py", line 355, in _ApplyTypes_ + result = self._oleobj_.InvokeTypes( + *(dispid, LCID, wFlags, retType, argTypes) + args + ) +pywintypes.com_error: (-2147352567, '發生例外狀況。', (0, 'Microsoft Excel', 'Class Range 的 Select 方法失敗', 'xlmain11.chm', 0, -2146827284), None) +2025-01-14 13:12:22,010 - INFO - 釋放 Excel 資源,處理完成。 +2025-01-14 13:13:33,776 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 13:14:08,245 - ERROR - 執行過程中發生未知錯誤: (-2147352567, '發生例外狀況。', (0, 'Microsoft Excel', 'Class Range 的 Select 方法失敗', 'xlmain11.chm', 0, -2146827284), None) +Traceback (most recent call last): + File "a706_手動更正漢字標音.py", line 321, in main + result_code = process(wb) + File "a706_手動更正漢字標音.py", line 280, in process + return_code = update_han_ji_piau_im(wb=wb) + File "a706_手動更正漢字標音.py", line 172, in update_han_ji_piau_im + sheet.range((row, 1)).select() + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^ + File "c:\work\Piau-Im\.venv\Lib\site-packages\xlwings\main.py", line 2815, in select + self.impl.select() + ~~~~~~~~~~~~~~~~^^ + File "c:\work\Piau-Im\.venv\Lib\site-packages\xlwings\_xlwindows.py", line 1500, in select + return self.xl.Select() + ~~~~~~~~~~~~~~^^ + File "c:\work\Piau-Im\.venv\Lib\site-packages\xlwings\_xlwindows.py", line 122, in __call__ + v = self.__method(*args, **kwargs) + File ">", line 2, in Select + File "c:\work\Piau-Im\.venv\Lib\site-packages\win32com\client\dynamic.py", line 355, in _ApplyTypes_ + result = self._oleobj_.InvokeTypes( + *(dispid, LCID, wFlags, retType, argTypes) + args + ) +pywintypes.com_error: (-2147352567, '發生例外狀況。', (0, 'Microsoft Excel', 'Class Range 的 Select 方法失敗', 'xlmain11.chm', 0, -2146827284), None) +2025-01-14 13:14:08,401 - INFO - 釋放 Excel 資源,處理完成。 +2025-01-14 13:16:57,141 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 13:17:06,990 - ERROR - 執行過程中發生未知錯誤: (-2147352567, '發生例外狀況。', (0, 'Microsoft Excel', 'Class Range 的 Select 方法失敗', 'xlmain11.chm', 0, -2146827284), None) +Traceback (most recent call last): + File "a706_手動更正漢字標音.py", line 321, in main + result_code = process(wb) + File "a706_手動更正漢字標音.py", line 280, in process + return_code = update_han_ji_piau_im(wb=wb) + File "a706_手動更正漢字標音.py", line 172, in update_han_ji_piau_im + sheet.range((row, 1)).select() + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^ + File "c:\work\Piau-Im\.venv\Lib\site-packages\xlwings\main.py", line 2815, in select + self.impl.select() + ~~~~~~~~~~~~~~~~^^ + File "c:\work\Piau-Im\.venv\Lib\site-packages\xlwings\_xlwindows.py", line 1500, in select + return self.xl.Select() + ~~~~~~~~~~~~~~^^ + File "c:\work\Piau-Im\.venv\Lib\site-packages\xlwings\_xlwindows.py", line 122, in __call__ + v = self.__method(*args, **kwargs) + File ">", line 2, in Select + File "c:\work\Piau-Im\.venv\Lib\site-packages\win32com\client\dynamic.py", line 355, in _ApplyTypes_ + result = self._oleobj_.InvokeTypes( + *(dispid, LCID, wFlags, retType, argTypes) + args + ) +pywintypes.com_error: (-2147352567, '發生例外狀況。', (0, 'Microsoft Excel', 'Class Range 的 Select 方法失敗', 'xlmain11.chm', 0, -2146827284), None) +2025-01-14 13:17:07,123 - INFO - 釋放 Excel 資源,處理完成。 +2025-01-14 13:18:12,853 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 13:24:28,437 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 13:27:03,839 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 13:31:22,827 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 13:32:53,238 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 13:33:45,925 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 13:35:37,531 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 13:37:42,151 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 13:40:13,342 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 13:40:57,233 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 13:42:20,890 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 13:46:07,372 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 13:47:54,035 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 13:48:26,488 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 13:51:19,399 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 13:57:02,635 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 14:01:19,915 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 14:03:57,154 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 14:04:54,099 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 14:06:56,930 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 14:15:57,377 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 14:17:19,378 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 14:19:38,118 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 14:19:53,474 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 14:21:31,321 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 14:21:57,000 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 14:22:42,880 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 14:24:28,205 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 14:27:22,922 - INFO - 釋放 Excel 資源,處理完成。 +2025-01-14 14:28:24,526 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 14:33:38,644 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 14:35:58,776 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 14:37:24,492 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 14:40:11,114 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 14:41:41,894 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 14:50:06,048 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 14:50:06,271 - ERROR - 執行過程中發生未知錯誤: 'bool' object is not callable +Traceback (most recent call last): + File "a706_手動更正漢字標音.py", line 332, in main + result_code = process(wb) + File "a706_手動更正漢字標音.py", line 291, in process + return_code = update_han_ji_piau_im(wb=wb) + File "a706_手動更正漢字標音.py", line 193, in update_han_ji_piau_im + if is_punctuation(han_ji): + ~~~~~~~~~~~~~~^^^^^^^^ +TypeError: 'bool' object is not callable +2025-01-14 14:50:06,420 - INFO - 釋放 Excel 資源,處理完成。 +2025-01-14 14:53:34,356 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 14:56:33,825 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 15:00:08,193 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 15:02:09,097 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 15:04:00,497 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 15:07:29,353 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 15:10:34,519 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 15:12:02,643 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 15:13:09,453 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 15:13:25,628 - INFO - 完成【作業程序】:更新漢字標音並同步【標音字庫】內容... +2025-01-14 15:13:25,628 - INFO - 完成【處理作業】... +2025-01-14 15:13:25,813 - INFO - 釋放 Excel 資源,處理完成。 +2025-01-14 15:13:25,813 - INFO - 作業成功完成! +2025-01-14 15:13:45,460 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 15:14:11,836 - INFO - 完成【作業程序】:更新漢字標音並同步【標音字庫】內容... +2025-01-14 15:14:11,836 - INFO - 完成【處理作業】... +2025-01-14 15:14:12,045 - INFO - 釋放 Excel 資源,處理完成。 +2025-01-14 15:14:12,045 - INFO - 作業成功完成! +2025-01-14 15:15:55,174 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 15:16:16,804 - INFO - 完成【作業程序】:更新漢字標音並同步【標音字庫】內容... +2025-01-14 15:16:16,805 - INFO - 完成【處理作業】... +2025-01-14 15:16:16,985 - INFO - 釋放 Excel 資源,處理完成。 +2025-01-14 15:16:16,985 - INFO - 作業成功完成! +2025-01-14 15:17:08,152 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 15:17:08,333 - ERROR - 執行過程中發生未知錯誤: (-2147352567, '發生例外狀況。', (0, 'Microsoft Excel', 'Class Range 的 Select 方法失敗', 'xlmain11.chm', 0, -2146827284), None) +Traceback (most recent call last): + File "a706_手動更正漢字標音.py", line 334, in main + result_code = process(wb) + File "a706_手動更正漢字標音.py", line 293, in process + return_code = update_han_ji_piau_im(wb=wb) + File "a706_手動更正漢字標音.py", line 170, in update_han_ji_piau_im + han_ji_piau_im_sheet.range((row, 1)).select() + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^ + File "c:\work\Piau-Im\.venv\Lib\site-packages\xlwings\main.py", line 2815, in select + self.impl.select() + ~~~~~~~~~~~~~~~~^^ + File "c:\work\Piau-Im\.venv\Lib\site-packages\xlwings\_xlwindows.py", line 1500, in select + return self.xl.Select() + ~~~~~~~~~~~~~~^^ + File "c:\work\Piau-Im\.venv\Lib\site-packages\xlwings\_xlwindows.py", line 122, in __call__ + v = self.__method(*args, **kwargs) + File ">", line 2, in Select + File "c:\work\Piau-Im\.venv\Lib\site-packages\win32com\client\dynamic.py", line 355, in _ApplyTypes_ + result = self._oleobj_.InvokeTypes( + *(dispid, LCID, wFlags, retType, argTypes) + args + ) +pywintypes.com_error: (-2147352567, '發生例外狀況。', (0, 'Microsoft Excel', 'Class Range 的 Select 方法失敗', 'xlmain11.chm', 0, -2146827284), None) +2025-01-14 15:17:08,481 - INFO - 釋放 Excel 資源,處理完成。 +2025-01-14 15:18:16,909 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 15:18:28,388 - INFO - 完成【作業程序】:更新漢字標音並同步【標音字庫】內容... +2025-01-14 15:18:28,389 - INFO - 完成【處理作業】... +2025-01-14 15:18:28,545 - INFO - 釋放 Excel 資源,處理完成。 +2025-01-14 15:18:28,545 - INFO - 作業成功完成! +2025-01-14 15:19:00,112 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 15:19:10,548 - INFO - 完成【作業程序】:更新漢字標音並同步【標音字庫】內容... +2025-01-14 15:19:10,548 - INFO - 完成【處理作業】... +2025-01-14 15:19:10,720 - INFO - 釋放 Excel 資源,處理完成。 +2025-01-14 15:19:10,720 - INFO - 作業成功完成! +2025-01-14 15:54:34,895 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 15:54:45,516 - INFO - 完成【作業程序】:更新漢字標音並同步【標音字庫】內容... +2025-01-14 15:54:45,516 - INFO - 完成【處理作業】... +2025-01-14 15:54:45,674 - INFO - 釋放 Excel 資源,處理完成。 +2025-01-14 15:54:45,674 - INFO - 作業成功完成! +2025-01-14 15:56:40,528 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 15:56:40,920 - ERROR - 執行過程中發生未知錯誤: 'str' object has no attribute 'value' and no __dict__ for setting new attributes +Traceback (most recent call last): + File "a706_手動更正漢字標音.py", line 337, in main + result_code = process(wb) + File "a706_手動更正漢字標音.py", line 296, in process + return_code = update_han_ji_piau_im(wb=wb) + File "a706_手動更正漢字標音.py", line 252, in update_han_ji_piau_im + jin_kang_piau_im.value = corrected_tai_gi # 更新【人工標音】儲存格 + ^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'str' object has no attribute 'value' and no __dict__ for setting new attributes +2025-01-14 15:56:41,078 - INFO - 釋放 Excel 資源,處理完成。 +2025-01-14 15:59:20,146 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 15:59:30,625 - INFO - 完成【作業程序】:更新漢字標音並同步【標音字庫】內容... +2025-01-14 15:59:30,625 - INFO - 完成【處理作業】... +2025-01-14 15:59:30,813 - INFO - 釋放 Excel 資源,處理完成。 +2025-01-14 15:59:30,813 - INFO - 作業成功完成! +2025-01-14 16:02:20,636 - INFO - 作業開始 +2025-01-14 16:02:20,637 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 16:03:21,293 - INFO - 己存檔至路徑:{file_path} +2025-01-14 16:03:21,293 - INFO - a702_查找及填入漢字標音.py 程式已執行完畢! +2025-01-14 16:03:21,293 - INFO - 作業完成! +2025-01-14 16:08:47,416 - INFO - 作業開始 +2025-01-14 16:08:47,417 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 16:09:46,383 - INFO - a702_查找及填入漢字標音.py 程式已執行完畢! +2025-01-14 16:10:11,081 - INFO - 作業開始 +2025-01-14 16:10:11,082 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 16:11:10,355 - INFO - 己存檔至路徑:{file_path} +2025-01-14 16:11:10,355 - INFO - a702_查找及填入漢字標音.py 程式已執行完畢! +2025-01-14 16:11:10,355 - INFO - 作業完成! +2025-01-14 16:13:49,550 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 16:13:58,819 - INFO - 完成【作業程序】:更新漢字標音並同步【標音字庫】內容... +2025-01-14 16:13:58,820 - INFO - 完成【處理作業】... +2025-01-14 16:13:58,895 - INFO - 釋放 Excel 資源,處理完成。 +2025-01-14 16:13:58,895 - INFO - 作業成功完成! +2025-01-14 16:14:17,637 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 16:14:27,598 - INFO - 完成【作業程序】:更新漢字標音並同步【標音字庫】內容... +2025-01-14 16:14:27,598 - INFO - 完成【處理作業】... +2025-01-14 16:14:27,671 - INFO - 釋放 Excel 資源,處理完成。 +2025-01-14 16:14:27,671 - INFO - 作業成功完成! +2025-01-14 16:15:34,597 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 16:15:44,502 - INFO - 完成【作業程序】:更新漢字標音並同步【標音字庫】內容... +2025-01-14 16:15:44,502 - INFO - 完成【處理作業】... +2025-01-14 16:15:44,581 - INFO - 釋放 Excel 資源,處理完成。 +2025-01-14 16:15:44,581 - INFO - 作業成功完成! +2025-01-14 16:16:40,231 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 16:16:50,102 - INFO - 完成【作業程序】:更新漢字標音並同步【標音字庫】內容... +2025-01-14 16:16:50,102 - INFO - 完成【處理作業】... +2025-01-14 16:16:50,177 - INFO - 釋放 Excel 資源,處理完成。 +2025-01-14 16:16:50,177 - INFO - 作業成功完成! +2025-01-14 16:19:25,391 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 16:19:35,062 - INFO - 完成【作業程序】:更新漢字標音並同步【標音字庫】內容... +2025-01-14 16:19:35,062 - INFO - 完成【處理作業】... +2025-01-14 16:19:35,144 - INFO - 釋放 Excel 資源,處理完成。 +2025-01-14 16:19:35,144 - INFO - 作業成功完成! +2025-01-14 16:20:19,947 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 16:20:29,948 - INFO - 完成【作業程序】:更新漢字標音並同步【標音字庫】內容... +2025-01-14 16:20:29,948 - INFO - 完成【處理作業】... +2025-01-14 16:20:30,032 - INFO - 釋放 Excel 資源,處理完成。 +2025-01-14 16:20:30,032 - INFO - 作業成功完成! +2025-01-14 16:29:15,044 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 16:29:24,256 - ERROR - 執行過程中發生未知錯誤: cannot access local variable 'jin_kang_piau_im_cell' where it is not associated with a value +Traceback (most recent call last): + File "a706_手動更正漢字標音.py", line 341, in main + result_code = process(wb) + File "a706_手動更正漢字標音.py", line 300, in process + return_code = update_han_ji_piau_im(wb=wb) + File "a706_手動更正漢字標音.py", line 202, in update_han_ji_piau_im + if han_ji_cell.color == (0, 255, 200) and jin_kang_piau_im_cell.value == tai_gi_cell.value: + ^^^^^^^^^^^^^^^^^^^^^ +UnboundLocalError: cannot access local variable 'jin_kang_piau_im_cell' where it is not associated with a value +2025-01-14 16:29:24,318 - INFO - 釋放 Excel 資源,處理完成。 +2025-01-14 16:31:49,655 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 16:34:40,292 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 16:35:33,827 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 16:36:17,909 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 16:36:28,342 - INFO - 完成【作業程序】:更新漢字標音並同步【標音字庫】內容... +2025-01-14 16:36:28,342 - INFO - 完成【處理作業】... +2025-01-14 16:36:28,413 - INFO - 釋放 Excel 資源,處理完成。 +2025-01-14 16:36:28,413 - INFO - 作業成功完成! +2025-01-14 16:36:42,856 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 16:36:52,688 - INFO - 完成【作業程序】:更新漢字標音並同步【標音字庫】內容... +2025-01-14 16:36:52,689 - INFO - 完成【處理作業】... +2025-01-14 16:36:52,760 - INFO - 釋放 Excel 資源,處理完成。 +2025-01-14 16:36:52,760 - INFO - 作業成功完成! +2025-01-14 16:37:08,328 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 16:37:19,124 - INFO - 完成【作業程序】:更新漢字標音並同步【標音字庫】內容... +2025-01-14 16:37:19,124 - INFO - 完成【處理作業】... +2025-01-14 16:37:19,207 - INFO - 釋放 Excel 資源,處理完成。 +2025-01-14 16:37:19,207 - INFO - 作業成功完成! +2025-01-14 16:38:09,805 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 16:38:19,995 - INFO - 完成【作業程序】:更新漢字標音並同步【標音字庫】內容... +2025-01-14 16:38:19,996 - INFO - 完成【處理作業】... +2025-01-14 16:38:20,067 - INFO - 釋放 Excel 資源,處理完成。 +2025-01-14 16:38:20,067 - INFO - 作業成功完成! +2025-01-14 16:38:53,854 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-14 16:39:04,773 - INFO - 完成【作業程序】:更新漢字標音並同步【標音字庫】內容... +2025-01-14 16:39:04,774 - INFO - 完成【處理作業】... +2025-01-14 16:39:04,853 - INFO - 釋放 Excel 資源,處理完成。 +2025-01-14 16:39:04,853 - INFO - 作業成功完成! diff --git "a/\346\262\263\346\264\233\350\251\261" "b/\346\262\263\346\264\233\350\251\261" new file mode 100644 index 0000000..e69de29