diff --git a/.vscode/launch.json b/.vscode/launch.json index 970c1eb..3350f22 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -4,6 +4,13 @@ // 如需詳細資訊,請瀏覽: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ + { + "name": "p711_TL_Tng_Zu_Im", + "type": "debugpy", + "request": "launch", + "program": "p711_TL_Tng_Zu_Im.py", + "console": "integratedTerminal", + }, { "name": "mod_台羅音標漢字庫", "type": "debugpy", diff --git "a/Documents/D900_\345\217\260\347\276\205\351\237\263\346\250\231\346\274\242\345\255\227\345\272\253.csv" "b/Documents/Loo_Ma_Phing_Im/D900_\345\217\260\347\276\205\351\237\263\346\250\231\346\274\242\345\255\227\345\272\253.csv" similarity index 100% rename from "Documents/D900_\345\217\260\347\276\205\351\237\263\346\250\231\346\274\242\345\255\227\345\272\253.csv" rename to "Documents/Loo_Ma_Phing_Im/D900_\345\217\260\347\276\205\351\237\263\346\250\231\346\274\242\345\255\227\345\272\253.csv" diff --git "a/Documents/D900_\345\217\260\347\276\205\351\237\263\346\250\231\346\274\242\345\255\227\345\272\253.xlsx" "b/Documents/Loo_Ma_Phing_Im/D900_\345\217\260\347\276\205\351\237\263\346\250\231\346\274\242\345\255\227\345\272\253.xlsx" similarity index 100% rename from "Documents/D900_\345\217\260\347\276\205\351\237\263\346\250\231\346\274\242\345\255\227\345\272\253.xlsx" rename to "Documents/Loo_Ma_Phing_Im/D900_\345\217\260\347\276\205\351\237\263\346\250\231\346\274\242\345\255\227\345\272\253.xlsx" diff --git a/Documents/Loo_Ma_Phing_Im/README.md b/Documents/Loo_Ma_Phing_Im/README.md new file mode 100644 index 0000000..70f499f --- /dev/null +++ b/Documents/Loo_Ma_Phing_Im/README.md @@ -0,0 +1,140 @@ +# 羅馬拼音 + +## 需求 + +### 功能摘要 + +- 功能名稱:TL_Tng_Zu_Im (台羅轉注音) + +- 功能描述:將傳入之【台羅拼音】羅馬字母轉換成【方音符號】之注音符號。 + +- 範例說明: + + - 漢字:不 + - 羅馬拼音:put4 + - 聲母:p + - 韻母:ut + - 聲調:4 + + ```python + def TL_Tng_Zu_Im(siann_bu, un_bu, siann_tiau): + # 處理作業 + return { + '聲母': zu_im_siann_bu, + '韻母': zu_im_un_bu, + '聲調': zu_im_siann_tiau, + } + + + + zu_im_fu_ho = TL_Tng_Zu_Im(siann_bu='p', un_bu='ut', siann_tiau=4) + # 進行斷言 + assert zu_im_fu_ho['聲母'] == 'ㄅ', "聲母不正確" + assert zu_im_fu_ho['韻母'] == 'ㄨㆵ', "韻母不正確" + assert zu_im_fu_ho['聲調'] == '', "聲調不正確" + ``` + + +### 資料表結構 + +#### 【韻母表】 + +```sh +CREATE TABLE 韻母表 ( + 識別號 INTEGER NOT NULL + UNIQUE, + 韻母編碼 TEXT, + 十五音字母 TEXT, + 韻母序 INTEGER, + 舒促 TEXT, + 國際音標 TEXT, + 台語音標 TEXT, + 方音符號 TEXT, + 白話字 TEXT, + 台羅拚音 TEXT, + 閩拼 TEXT, + PRIMARY KEY ( + 識別號 AUTOINCREMENT + ) +); +``` + +#### 【聲母表】 + +```sh +CREATE TABLE 聲母表 ( + 識別號 INTEGER NOT NULL + UNIQUE, + 十五音字母 TEXT, + 國際音標 TEXT, + 台語音標 TEXT, + 方音符號 TEXT, + 白話字 TEXT, + 台羅拚音 INTEGER, + 閩拼 TEXT, + 備註 TEXT, + PRIMARY KEY ( + 識別號 AUTOINCREMENT + ) +); +``` + +#### 【聲調表】 + +```sh +CREATE TABLE 聲調表 ( + 識別號 INTEGER NOT NULL, + 台羅八聲調 INTEGER, + 方音符號 TEXT, + 四聲調 TEXT, + 雅俗通聲調 TEXT, + 舒促聲 TEXT, + PRIMARY KEY ( + 識別號 AUTOINCREMENT + ) +); +``` + + +## 參考 + +### 變更資料表 + +```sh +PRAGMA foreign_keys = 0; + +CREATE TABLE sqlitestudio_temp_table AS SELECT * + FROM 聲調表; + +DROP TABLE 聲調表; + +CREATE TABLE 聲調表 ( + 識別號 INTEGER NOT NULL, + 台羅八聲調 INTEGER, + 方音符號 TEXT, + 四聲調 TEXT, + 雅俗通聲調 TEXT, + 舒促聲 TEXT, + PRIMARY KEY ( + 識別號 AUTOINCREMENT + ) +); + +INSERT INTO 聲調表 ( + 識別號, + 台羅八聲調, + 四聲調, + 雅俗通聲調, + 舒促聲 + ) + SELECT 識別號, + 台羅八聲調, + 四聲調, + 聲調, + 舒促聲 + FROM sqlitestudio_temp_table; + +DROP TABLE sqlitestudio_temp_table; + +PRAGMA foreign_keys = 1; +``` diff --git a/Tai_Loo_Han_Ji_Khoo.db b/Tai_Loo_Han_Ji_Khoo.db index d3b94c5..f716bff 100644 Binary files a/Tai_Loo_Han_Ji_Khoo.db and b/Tai_Loo_Han_Ji_Khoo.db differ diff --git a/a702_Batch_Zu_Tong_Piau_Zu_Im.py b/a702_Batch_Zu_Tong_Piau_Zu_Im.py index 9228670..7688247 100644 --- a/a702_Batch_Zu_Tong_Piau_Zu_Im.py +++ b/a702_Batch_Zu_Tong_Piau_Zu_Im.py @@ -41,12 +41,8 @@ named_range = wb.names['顯示注音輸入'] # 選擇名為 "顯示注音輸入" 的命名範圍# 選擇名為 "顯示注音輸入" 的命名範圍 named_range.refers_to_range.value = True - # 清空儲存格內容 - sheet = wb.sheets['漢字注音'] # 選擇指定的工作表# 選擇工作表 - sheet.range('D3:R166').clear_contents() # 清除 C3:R166 範圍的內容 - # (1) A720: 將 V3 儲存格內的漢字,逐個填入標音用方格。 - fill_hanji_in_cells(wb) + # fill_hanji_in_cells(wb) # (2) A731: 自動為漢字查找讀音,並抄寫到漢字的上方(拼音)及下方(注音)。 ca_han_ji_thak_im(wb, '漢字注音', 'V3') diff --git "a/docs/\351\207\221\345\211\233\350\210\254\350\213\245\346\263\242\347\276\205\350\234\234\347\266\223\343\200\202\346\263\225\346\234\203\345\233\240\347\224\261\345\210\206\347\254\254\344\270\200_\346\274\242\345\255\227\346\263\250\351\237\263.html" "b/docs/\351\207\221\345\211\233\350\210\254\350\213\245\346\263\242\347\276\205\350\234\234\347\266\223\343\200\202\346\263\225\346\234\203\345\233\240\347\224\261\345\210\206\347\254\254\344\270\200_\346\274\242\345\255\227\346\263\250\351\237\263.html" index 0e320e2..04d6800 100644 --- "a/docs/\351\207\221\345\211\233\350\210\254\350\213\245\346\263\242\347\276\205\350\234\234\347\266\223\343\200\202\346\263\225\346\234\203\345\233\240\347\224\261\345\210\206\347\254\254\344\270\200_\346\274\242\345\255\227\346\263\250\351\237\263.html" +++ "b/docs/\351\207\221\345\211\233\350\210\254\350\213\245\346\263\242\347\276\205\350\234\234\347\266\223\343\200\202\346\263\225\346\234\203\345\233\240\347\224\261\345\210\206\347\254\254\344\270\200_\346\274\242\345\255\227\346\263\250\351\237\263.html" @@ -17,108 +17,108 @@

-kim1 -kong1 -puann1 -na2 -pho1 -lo5 -bit8 -king1 +kim1ㄍㄧㆬ˙ +kong1ㄍㆲ˙ +puann1ㄅㄨㆩ˙ +jiok4ㆡㄧㆦㆻ +phoo¹ㄆㆦˉ +lo5ㄌㄜˊ +bit8ㆠㄧㆵ˙ +king1ㄍㄧㄥ˙

-huat4 -e6 -in1 -iu5 -hun1 -te7 -it4 +huat4ㄏㄨㄚㆵ +e6ㆤˋ +in1ㄧㄣ˙ +iu5ㄧㄨˊ +hun1ㄏㄨㄣ˙ +te7ㄉㆤ˪ +it4ㄧㆵ

-ju5 -si6 -ngoo2 -bun5 +ju5ㆡㄨˊ +si6ㄙㄧˋ +ngoo2ㄫㆦˋ +bun5ㆠㄨㄣˊ -it4 -si5 +it4ㄧㆵ +si5ㄙㄧˊ -put8 -tsai6 +put8ㄅㄨㆵ˙ +tsai6ㄗㄞˋ -ue7 -kok4 -ki5 -tshiu7 -kip4 -koo1 -tak8 -uan5 +ue7ㄨㆤ˪ +kok4ㄍㆦㆻ +ki5ㄍㄧˊ +tshiu7ㄘㄧㄨ˪ +kip4ㄍ一ㆴ +koo1ㄍㆦ˙ +tak8ㄉㄚㆻ˙ +uan5ㄨㄢˊ -ir2 -tua7 -pi2 -khu1 -tsing3 -tshainn1 -ji7 -pah4 -goo6 -tsap8 -lang5 -ku1 +ir2ˋ +tua7ㄉㄨㄚ˪ +pi2ㄅㄧˋ +khu1ㄎㄨ˙ +tsing3ㄗㄧㄥ˫ +tshainn1ㄘㆮ˙ +ji7ㆡㄧ˪ +pah4ㄅㄚㆷ +goo6ㆣㆦˋ +tsap8ㄗㄚㆴ˙ +jin⁵ㆢㄧㄣˊ +ku1ㄍㄨ˙ -nia7 -si5 +nia7ㄋㄧㄚ˪ +si5ㄙㄧˊ -se3 -tsun1 -sit8 -si5 +se3ㄙㆤ˫ +tsun1ㄗㄨㄣ˙ +sit8ㄙㄧㆵ˙ +si5ㄙㄧˊ -tio0 -i1 -ti5 -puat4 +tio0ㄉㄧㄜ˙ +i1ㄧ˙ +ti5ㄉㄧˊ +puat4ㄅㄨㄚㆵ -jip8 +jip8ㆡ一ㆴ˙ -ue7 -tua7 -siann5 -khit4 -sit8 +ue7ㄨㆤ˪ +tua7ㄉㄨㄚ˪ +siann5ㄙˊ +khit4ㄎㄧㆵ +sit8ㄙㄧㆵ˙ -u1 -ki5 -siann5 -tiong1 -tshur3 -te7 -khit4 -i2 +u1ㄨ˙ +ki5ㄍㄧˊ +siann5ㄙˊ +tiong1ㄉㄧㆲ˙ +tshur3ㄘ˫ +te7ㄉㆤ˪ +khit4ㄎㄧㆵ +i2ㄧˋ -huan5 -tsi3 -puinn2 -tshir3 +huan5ㄏㄨㄢˊ +tsi3ㄗㄧ˫ +puinn2ㄅㄨㆪˋ +tshir3ㄘ˫ -puinn7 -sit8 -git4 +puinn7ㄅㄨㆪ˪ +sit8ㄙㄧㆵ˙ +git4ㆣㄧㆵ -siu1 -i1 -puat4 +siu1ㄙㄧㄨ˙ +i1ㄧ˙ +puat4ㄅㄨㄚㆵ -se2 -tsiok4 -i2 +se2ㄙㆤˋ +tsiok4ㄗㄧㆦㆻ +i2ㄧˋ -hu1 -tso7 -ji5 -tser6 +hu1ㄏㄨ˙ +tso7ㄗㄜ˪ +ji5ㆡㄧˊ +tser6ㄗˋ

diff --git "a/output2/\343\200\220\346\262\263\346\264\233\350\251\261\346\263\250\351\237\263\343\200\221\351\207\221\345\211\233\350\210\254\350\213\245\346\263\242\347\276\205\350\234\234\347\266\223001\343\200\202\346\263\225\346\234\203\345\233\240\347\224\261\345\210\206\347\254\254\344\270\200.xlsx" "b/output2/\343\200\220\346\262\263\346\264\233\350\251\261\346\263\250\351\237\263\343\200\221\351\207\221\345\211\233\350\210\254\350\213\245\346\263\242\347\276\205\350\234\234\347\266\223001\343\200\202\346\263\225\346\234\203\345\233\240\347\224\261\345\210\206\347\254\254\344\270\200.xlsx" index 9c22799..95fc06a 100644 Binary files "a/output2/\343\200\220\346\262\263\346\264\233\350\251\261\346\263\250\351\237\263\343\200\221\351\207\221\345\211\233\350\210\254\350\213\245\346\263\242\347\276\205\350\234\234\347\266\223001\343\200\202\346\263\225\346\234\203\345\233\240\347\224\261\345\210\206\347\254\254\344\270\200.xlsx" and "b/output2/\343\200\220\346\262\263\346\264\233\350\251\261\346\263\250\351\237\263\343\200\221\351\207\221\345\211\233\350\210\254\350\213\245\346\263\242\347\276\205\350\234\234\347\266\223001\343\200\202\346\263\225\346\234\203\345\233\240\347\224\261\345\210\206\347\254\254\344\270\200.xlsx" differ diff --git "a/output2/\343\200\220\346\262\263\346\264\233\350\251\261\346\263\250\351\237\263\343\200\221\351\207\221\345\211\233\350\210\254\350\213\245\346\263\242\347\276\205\350\234\234\347\266\223\343\200\202\346\263\225\346\234\203\345\233\240\347\224\261\345\210\206\347\254\254\344\270\200.xlsx" "b/output2/\343\200\220\346\262\263\346\264\233\350\251\261\346\263\250\351\237\263\343\200\221\351\207\221\345\211\233\350\210\254\350\213\245\346\263\242\347\276\205\350\234\234\347\266\223\343\200\202\346\263\225\346\234\203\345\233\240\347\224\261\345\210\206\347\254\254\344\270\200.xlsx" index 775ed07..f482e70 100644 Binary files "a/output2/\343\200\220\346\262\263\346\264\233\350\251\261\346\263\250\351\237\263\343\200\221\351\207\221\345\211\233\350\210\254\350\213\245\346\263\242\347\276\205\350\234\234\347\266\223\343\200\202\346\263\225\346\234\203\345\233\240\347\224\261\345\210\206\347\254\254\344\270\200.xlsx" and "b/output2/\343\200\220\346\262\263\346\264\233\350\251\261\346\263\250\351\237\263\343\200\221\351\207\221\345\211\233\350\210\254\350\213\245\346\263\242\347\276\205\350\234\234\347\266\223\343\200\202\346\263\225\346\234\203\345\233\240\347\224\261\345\210\206\347\254\254\344\270\200.xlsx" differ diff --git a/p702_Ca_Han_Ji_Thak_Im.py b/p702_Ca_Han_Ji_Thak_Im.py index d13acf9..6b3d37f 100644 --- a/p702_Ca_Han_Ji_Thak_Im.py +++ b/p702_Ca_Han_Ji_Thak_Im.py @@ -4,19 +4,9 @@ import xlwings as xw # from mod_雅俗通 import han_ji_ca_piau_im -from mod_台羅音標漢字庫 import han_ji_ca_piau_im - -HONG_IM_TIAU_HO = { - '0': '˙', - '1': 'ˉ', - '2': 'ˋ', - '3': '˪', - '4': '', - '5': 'ˊ', - '6': 'ˋ', - '7': '˫', - '8': '˙', -} +from mod_台羅音標漢字庫 import han_ji_ca_piau_im, split_zu_im +from p711_TL_Tng_Zu_Im import TL_Tng_Zu_Im + # ========================================================= # 判斷是否為標點符號的輔助函數 @@ -71,52 +61,84 @@ def ca_han_ji_thak_im(wb, sheet_name='漢字注音', cell='V3'): index = 0 # 漢字處理指標 while index < total_length: # 使用 while 而非 for,確保處理完整個字串 for col in range(start, end): # 【D欄=4】到【R欄=18】 + if index == total_length: # 確認是否已處理完整個字串 + break + col_name = xw.utils.col_name(col) char = None cell_value = "" + han_ji = '' lo_ma_im_piau = "" zu_im_hu_ho = "" result = None msg = "" - # 確認是否還有字元可以處理 - if index < total_length: - char = v3_value[index] # 取得目前欲處理的【漢字】 - if char == "\n": # 確認待處理的【漢字】不是【換行字元: \n】 - # 若遇到換行字元,退出迴圈 - index += 1 - break; - else: - cell_value = sheet.range((row, col)).value # 取得 D4, E4, ..., R4 的內容 - if not is_valid_han_ji(cell_value): # 確認儲存格有填入【拚音字母/注音符號】 - msg = cell_value # 儲存格內容不是【漢字】,是【空白】,或是【標點符號】 - else: - # 取得正在注音的漢字 - result = han_ji_ca_piau_im(cursor, cell_value) - - # 取羅馬拼音和台語注音 - if result: - siann_tiau = str(int(result[0]['聲調'])) - lo_ma_im_piau = f"{result[0]['聲母']}{result[0]['韻母']}{siann_tiau}" - # fong_im_tiau_ho = HONG_IM_TIAU_HO[siann_tiau] - # zu_im_hu_ho = f"{result[0]['聲母方音符號']}{result[0]['韻母方音符號']}{fong_im_tiau_ho}" - - # 將羅馬拼音填入當前 row + 1 的儲存格 - sheet.range((row - 1, col)).value = lo_ma_im_piau - - # 將台語注音填入當前 row + 3 的儲存格 - sheet.range((row + 1, col)).value = zu_im_hu_ho - else: - msg = f"【{cell_value}】查無此字!" - # 顯示當前處理的【漢字】、【羅馬拼音】和【台語注音】 - if lo_ma_im_piau and zu_im_hu_ho: - print(f"({row}, {col_name}) = {cell_value} [{lo_ma_im_piau}] 【{zu_im_hu_ho}】") - else: - print(f"({row}, {col_name}) = {msg}") - # 更新索引,處理下一個字元 + char = v3_value[index] # 取得目前欲處理的【漢字】 + if char == "\n": # 確認待處理的【漢字】不是【換行字元: \n】 + # 若遇到換行字元,退出迴圈 + index += 1 + break; + + # 取得正在注音的漢字 + cell_value = sheet.range((row, col)).value # 取得 D4, E4, ..., R4 的內容 + if not is_valid_han_ji(cell_value): # 確認儲存格有填入【拚音字母/注音符號】 + msg = cell_value # 儲存格內容不是【漢字】,是【空白】,或是【標點符號】 + print(f"({row}, {col_name}) = {msg}") index += 1 + continue # 跳過此次迴圈,處理下一個字元 else: - break # 若字串已處理完畢,退出迴圈 + han_ji = cell_value # 取得【漢字】 + + # 檢查有無手動填入【拚音字母/注音符號】(儲存格: D3, E3, ..., R3) + manual_input = sheet.range((row-2, col)).value + if manual_input: + # 檢查是否為完整格式〔put⁴〕【ㄅㄨㆵ】 + if '〔' in manual_input and '〕' in manual_input and '【' in manual_input and '】' in manual_input: + lo_ma_im_piau = manual_input.split('〔')[1].split('〕')[0] + zu_im_hu_ho = manual_input.split('【')[1].split('】')[0] + else: + # 如果是簡化格式,例如 "put4" + zu_im_list = split_zu_im(manual_input) # 將人工輸入的【羅馬拼音】拆分為【聲母】、【韻母】和【聲調】 + zu_im_hu_ho = TL_Tng_Zu_Im( + siann_bu=zu_im_list[0], # 聲母是拼音的前部分 + un_bu=zu_im_list[1], # 韻母是拼音的後部分 + siann_tiau=zu_im_list[2], # 最後一位是聲調 + cursor=cursor + )['注音符號'] # 從 TL_Tng_Zu_Im 取得注音符號 + lo_ma_im_piau = manual_input + + sheet.range((row - 1, col)).value = lo_ma_im_piau + sheet.range((row + 1, col)).value = zu_im_hu_ho + else: + # 查找漢字讀音 + result = han_ji_ca_piau_im(cursor, han_ji) + + # 取羅馬拼音和台語注音 + if result: + lo_ma_im_piau = result[0]['台羅音標'] # 取得【羅馬拼音】 + # 將台羅音標轉換為台語注音符號 + zu_im_hu_ho = TL_Tng_Zu_Im( + siann_bu=result[0]['聲母'], + un_bu=result[0]['韻母'], + siann_tiau=result[0]['聲調'], + cursor=cursor + ) + + # 將羅馬拼音填入當前 row + 1 的儲存格 + sheet.range((row - 1, col)).value = lo_ma_im_piau + + # 將台語注音填入當前 row + 3 的儲存格 + sheet.range((row + 1, col)).value = zu_im_hu_ho['注音符號'] + else: + msg = f"【{cell_value}】查無此字!" + # 顯示當前處理的【漢字】、【羅馬拼音】和【台語注音】 + if lo_ma_im_piau and zu_im_hu_ho: + print(f"({row}, {col_name}) = {han_ji} [{lo_ma_im_piau}] 【{zu_im_hu_ho}】") + else: + print(f"({row}, {col_name}) = {msg}") + + # 更新索引,處理下一個字元 + index += 1 # 每處理 15 個字元後,換到下一行 row += 4 print("\n") diff --git a/p710_thiam_han_ji.py b/p710_thiam_han_ji.py index dae86c1..c06f25a 100644 --- a/p710_thiam_han_ji.py +++ b/p710_thiam_han_ji.py @@ -5,6 +5,9 @@ def fill_hanji_in_cells(wb, sheet_name='漢字注音', cell='V3'): # 選擇指定的工作表 sheet = wb.sheets[sheet_name] + # 清空儲存格內容 + sheet.range('D3:R166').clear_contents() # 清除 C3:R166 範圍的內容 + # 取得 V3 儲存格的字串 v3_value = sheet.range(cell).value diff --git a/p711_TL_Tng_Zu_Im.py b/p711_TL_Tng_Zu_Im.py new file mode 100644 index 0000000..20f3880 --- /dev/null +++ b/p711_TL_Tng_Zu_Im.py @@ -0,0 +1,85 @@ +import sqlite3 + + +def connect_to_db(db_path): + conn = sqlite3.connect(db_path) + cursor = conn.cursor() + return conn, cursor + +def close_db_connection(conn): + conn.close() + +def TL_Tng_Zu_Im(siann_bu, un_bu, siann_tiau, cursor): + """ + 根據傳入的台羅拼音聲母、韻母、聲調,轉換成對應的方音符號 + :param siann_bu: 聲母 (台羅拼音) + :param un_bu: 韻母 (台羅拼音) + :param siann_tiau: 聲調 (台羅拼音中的數字) + :param cursor: 數據庫游標 + :return: 包含方音符號的字典 + """ + + # 查詢聲母表,將台羅拼音的聲母轉換成方音符號 + cursor.execute("SELECT 方音符號 FROM 聲母表 WHERE 台羅拚音 = ?", (siann_bu,)) + siann_bu_result = cursor.fetchone() + if siann_bu_result: + zu_im_siann_bu = siann_bu_result[0] # 取得方音符號 + else: + zu_im_siann_bu = '' # 無聲母的情況 + + # 查詢韻母表,將台羅拼音的韻母轉換成方音符號 + cursor.execute("SELECT 方音符號 FROM 韻母表 WHERE 台羅拚音 = ?", (un_bu,)) + un_bu_result = cursor.fetchone() + if un_bu_result: + zu_im_un_bu = un_bu_result[0] # 取得方音符號 + else: + zu_im_un_bu = '' + + # 查詢聲調表,將台羅拼音的聲調轉換成方音符號 + cursor.execute("SELECT 方音符號 FROM 聲調表 WHERE 台羅八聲調 = ?", (siann_tiau,)) + siann_tiau_result = cursor.fetchone() + if siann_tiau_result: + zu_im_siann_tiau = siann_tiau_result[0] # 取得方音符號 + else: + zu_im_siann_tiau = '' + + return { + '注音符號': f"{zu_im_siann_bu}{zu_im_un_bu}{zu_im_siann_tiau}", + '聲母': zu_im_siann_bu, + '韻母': zu_im_un_bu, + '聲調': zu_im_siann_tiau + } + +def dict_to_str(zu_im_hu_ho): + return f"{zu_im_hu_ho['聲母']}{zu_im_hu_ho['韻母']}{zu_im_hu_ho['聲調']}" + + + +# 測試範例 +if __name__ == "__main__": + # 連接到資料庫 + db_path = "Tai_Loo_Han_Ji_Khoo.db" # 請替換成正確的資料庫路徑 + conn, cursor = connect_to_db(db_path) + + # 測試 1 + zu_im_hu_ho = TL_Tng_Zu_Im(siann_bu='p', un_bu='ut', siann_tiau=4, cursor=cursor) + assert zu_im_hu_ho['聲母'] == 'ㄅ', "聲母不正確" + assert zu_im_hu_ho['韻母'] == 'ㄨㆵ', "韻母不正確" + assert zu_im_hu_ho['聲調'] == '', "聲調不正確" + print("測試 1 成功") + print(str(zu_im_hu_ho)) + zu_im_hu_ho_str = dict_to_str(zu_im_hu_ho) + print(zu_im_hu_ho_str) + + # 測試 2 + zu_im_hu_ho = TL_Tng_Zu_Im(siann_bu='', un_bu='m', siann_tiau=7, cursor=cursor) + assert zu_im_hu_ho['聲母'] == '', "聲母不正確" + assert zu_im_hu_ho['韻母'] == 'ㆬ', "韻母不正確" + assert zu_im_hu_ho['聲調'] == '˫', "聲調不正確" + print("測試 2 成功") + print(str(zu_im_hu_ho)) + zu_im_hu_ho_str = dict_to_str(zu_im_hu_ho) + print(zu_im_hu_ho_str) + + # 關閉資料庫連接 + close_db_connection(conn)