diff --git a/.vscode/launch.json b/.vscode/launch.json
index 57ec557..5af4541 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": "p740_Phua_Im_Ji",
+ "type": "debugpy",
+ "request": "launch",
+ "program": "p740_Phua_Im_Ji.py",
+ "console": "integratedTerminal",
+ },
{
"name": "csv01_更新漢字表資料",
"type": "debugpy",
diff --git a/Ho_Lok_Ue.db b/Ho_Lok_Ue.db
index b4d2597..9589021 100644
Binary files a/Ho_Lok_Ue.db and b/Ho_Lok_Ue.db differ
diff --git a/Phua_Im_Ji.json b/Phua_Im_Ji.json
new file mode 100644
index 0000000..8565dcd
--- /dev/null
+++ b/Phua_Im_Ji.json
@@ -0,0 +1,4 @@
+{
+ "行": "ㄒㄧㄥˊ",
+ "重": "ㄓㄨㄥˋ"
+}
\ No newline at end of file
diff --git "a/a701_\344\275\234\346\245\255\344\270\255\346\264\273\351\240\201\346\252\224\345\241\253\345\205\245\346\274\242\345\255\227.py" "b/a701_\344\275\234\346\245\255\344\270\255\346\264\273\351\240\201\346\252\224\345\241\253\345\205\245\346\274\242\345\255\227.py"
index 62ebdde..c47373e 100644
--- "a/a701_\344\275\234\346\245\255\344\270\255\346\264\273\351\240\201\346\252\224\345\241\253\345\205\245\346\274\242\345\255\227.py"
+++ "b/a701_\344\275\234\346\245\255\344\270\255\346\264\273\351\240\201\346\252\224\345\241\253\345\205\245\346\274\242\345\255\227.py"
@@ -5,6 +5,7 @@
import xlwings as xw
from mod_file_access import get_han_ji_khoo, get_sound_type, save_as_new_file
+from p701_Clear_Cells import clear_han_ji_kap_piau_im
from p702_Ca_Han_Ji_Thak_Im import ca_han_ji_thak_im
from p709_reset_han_ji_cells import reset_han_ji_cells
from p710_thiam_han_ji import fill_hanji_in_cells
@@ -37,6 +38,9 @@
print("無法執行,可能原因:(1) 未指定輸入檔案;(2) 未找到作用中的 Excel 工作簿")
sys.exit(2)
+# 將儲存格已填入之漢字及標音清除
+clear_han_ji_kap_piau_im(wb)
+
# 將待注音的【漢字儲存格】,文字顏色重設為黑色(自動 RGB: 0, 0, 0);填漢顏色重設為無填滿
reset_han_ji_cells(wb)
diff --git a/custom_pronunciation.json b/custom_pronunciation.json
new file mode 100644
index 0000000..8565dcd
--- /dev/null
+++ b/custom_pronunciation.json
@@ -0,0 +1,4 @@
+{
+ "行": "ㄒㄧㄥˊ",
+ "重": "ㄓㄨㄥˋ"
+}
\ No newline at end of file
diff --git a/data.pkl b/data.pkl
new file mode 100644
index 0000000..44a263f
Binary files /dev/null and b/data.pkl differ
diff --git "a/docs/\343\200\212\350\210\254\350\213\245\346\263\242\347\276\205\350\234\234\345\244\232\345\277\203\347\266\223\343\200\213_\345\215\201\344\272\224\351\237\263.html" "b/docs/\343\200\212\350\210\254\350\213\245\346\263\242\347\276\205\350\234\234\345\244\232\345\277\203\347\266\223\343\200\213_\345\215\201\344\272\224\351\237\263.html"
new file mode 100644
index 0000000..1d577e0
--- /dev/null
+++ "b/docs/\343\200\212\350\210\254\350\213\245\346\263\242\347\276\205\350\234\234\345\244\232\345\277\203\347\266\223\343\200\213_\345\215\201\344\272\224\351\237\263.html"
@@ -0,0 +1,91 @@
+
+
+
+
+ 《般若波羅蜜多心經》
+
+
+
+
+ 《般若波羅蜜多心經》
+
+
+
+ 觀 自 在 菩 薩,
+ 行 深 般 若 波 羅 蜜 多 時,
+ 照 見 五 蘊 皆 空,
+ 度 一 切 苦 厄。
+
+
+ 舍 利 子!
+ 色 不 異 空,
+ 空 不 異 色,
+ 色 即 是 空,
+ 空 即 是 色,
+ 受 想 行 識,
+ 亦 復 如 是。
+
+
+ 舍 利 子!
+ 是 諸 法 空 相,
+ 不 生 不 滅,
+ 不 垢 不 淨,
+ 不 增 不 減。
+ 是 故 空 中 無 色,
+ 無 受 想 行 識。
+ 無 眼 耳 鼻 舌 身 意;
+ 無 色 聲 香 味 觸 法。
+
+
+ 無 眼 界,
+ 乃 至 無 意 識 界。
+ 無 無 明,
+ 亦 無 無 明 盡;
+ 乃 至 無 老 死,
+ 亦 無 老 死 盡。
+
+
+ 無 苦 集 滅 道。
+ 無 智,
+ 亦 無 得。
+ 以 無 所 得 故!
+ 菩 提 薩 埵,
+ 依 般 若 波 羅 蜜 多 故,
+ 心 無 罣 礙,
+ 無 罣 礙 故,
+ 無 有 恐 怖,
+ 遠 離 顛 倒、
+ 夢 想,
+ 究 竟 湼 槃。
+
+
+ 三 世 諸 佛,
+ 依 般 若 波 羅 蜜 多 故,
+ 得 阿 耨 多 羅 三 藐 三 菩 提!
+
+
+ 故 知 般 若 波 羅 蜜 多,
+ 是 大 神 咒,
+ 是 大 明 咒,
+ 是 無 上 咒,
+ 是 無 等 等 咒。
+ 能 除 一 切 苦!
+ 真 實 不 虛!
+
+
+ 故 說 般 若 波 羅 蜜 多 咒,
+ 即 說 咒 曰:
+ 揭 諦,
+ 揭 諦,
+ 波 羅 揭 諦,
+ 波 羅 僧 揭 諦,
+ 菩 提 薩 婆 訶!
+
+
+
+
\ No newline at end of file
diff --git "a/mod_\346\250\231\351\237\263.py" "b/mod_\346\250\231\351\237\263.py"
index b58b229..4079391 100644
--- "a/mod_\346\250\231\351\237\263.py"
+++ "b/mod_\346\250\231\351\237\263.py"
@@ -139,7 +139,7 @@ def split_hong_im_hu_ho(hong_im_hu_ho):
return [sheng_mu, yun_mu, str(tiau_hao)]
-def choose_piau_im_method(piau_im, zu_im_huat, siann_bu, un_bu, tiau_ho):
+def tng_uann_han_ji_piau_im(piau_im, zu_im_huat, siann_bu, un_bu, tiau_ho):
"""選擇並執行對應的注音方法"""
if zu_im_huat == "雅俗通":
return piau_im.NST_piau_im(siann_bu, un_bu, tiau_ho)
@@ -169,7 +169,7 @@ def tlpa_tng_han_ji_piau_im(piau_im, piau_im_huat, tai_gi_im_piau):
if siann_bu == "" or siann_bu == None:
siann_bu = "Ø"
- han_ji_piau_im = choose_piau_im_method(
+ han_ji_piau_im = tng_uann_han_ji_piau_im(
piau_im,
piau_im_huat,
siann_bu,
@@ -188,7 +188,7 @@ def is_punctuation(char):
return False
# 可以根據需要擴充此列表以判斷各種標點符號
- punctuation_marks = ",。!?;:、()「」『』《》……"
+ punctuation_marks = ",。!!?;:、()「」『』《》……"
return char in punctuation_marks
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\343\200\221\343\200\212\350\210\254\350\213\245\346\263\242\347\276\205\350\234\234\345\244\232\345\277\203\347\266\223\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\343\200\221\343\200\212\350\210\254\350\213\245\346\263\242\347\276\205\350\234\234\345\244\232\345\277\203\347\266\223\343\200\213.xlsx"
index 0b4552a..6fe3b44 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\343\200\221\343\200\212\350\210\254\350\213\245\346\263\242\347\276\205\350\234\234\345\244\232\345\277\203\347\266\223\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\343\200\221\343\200\212\350\210\254\350\213\245\346\263\242\347\276\205\350\234\234\345\244\232\345\277\203\347\266\223\343\200\213.xlsx" differ
diff --git a/p701_Clear_Cells.py b/p701_Clear_Cells.py
index 97bae05..c2b0e33 100644
--- a/p701_Clear_Cells.py
+++ b/p701_Clear_Cells.py
@@ -2,7 +2,21 @@
import xlwings as xw
-def clear_hanji_in_cells(wb, sheet_name='漢字注音', cell='V3'):
+def clear_han_ji_kap_piau_im(wb, sheet_name='漢字注音'):
+ sheet = wb.sheets[sheet_name] # 選擇工作表
+ sheet.activate() # 將「漢字注音」工作表設為作用中工作表
+ sheet.range('A1').select() # 將 A1 儲存格設為作用儲存格
+
+ total_rows = wb.names['每頁總列數'].refers_to_range.value
+ cells_per_row = 4
+ end_of_rows = int((total_rows * cells_per_row ) + 2)
+ cells_range = f'D3:R{end_of_rows}'
+
+ sheet.range(cells_range).clear_contents() # 清除 C3:R{end_of_row} 範圍的內容
+
+
+
+def clear_hanji_in_cells(wb, sheet_name='漢字注音', source_cell='V3', clear_source=False):
# 選擇指定的工作表
sheet = wb.sheets[sheet_name]
@@ -45,4 +59,6 @@ def clear_hanji_in_cells(wb, sheet_name='漢字注音', cell='V3'):
# =========================================================================
# (2) 清除原先已填入的漢字
# =========================================================================
- sheet.range("V3").value = ""
+ if clear_source:
+ sheet.range(source_cell).value = ""
+ print(f"清空原先的漢字:{source_cell}")
diff --git a/p702_Ca_Han_Ji_Thak_Im.py b/p702_Ca_Han_Ji_Thak_Im.py
index cf640f6..bedd7dd 100644
--- a/p702_Ca_Han_Ji_Thak_Im.py
+++ b/p702_Ca_Han_Ji_Thak_Im.py
@@ -9,7 +9,9 @@
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 mod_標音 import tng_uann_han_ji_piau_im # 台語音標轉台語音標
from mod_標音 import PiauIm
+from p740_Phua_Im_Ji import PhuaImJi
# ==========================================================
# 注音法設定和共用變數
@@ -43,12 +45,50 @@ def choose_piau_im_method(piau_im, zu_im_huat, siann_bu, un_bu, tiau_ho):
return f"{siann}{un}{tiau_ho}"
return ""
+def cu_siann_un_tiau(result, han_ji_khoo, piau_im, piau_im_huat):
+ """查詢【漢字庫】取得之【查找結果】,將之切分:聲、韻、調"""
+ if han_ji_khoo == "河洛話":
+ #-----------------------------------------------------------------
+ # 【白話音】:依《河洛話漢字庫》標注【台語音標】和【方音符號】
+ #-----------------------------------------------------------------
+ # 將【台語音標】分解為【聲母】、【韻母】、【聲調】
+ siann_bu = result[0]['聲母']
+ un_bu = result[0]['韻母']
+ tiau_ho = result[0]['聲調']
+ if tiau_ho == "6":
+ # 若【聲調】為【6】,則將【聲調】改為【7】
+ tiau_ho = "7"
+ else:
+ #-----------------------------------------------------------------
+ # 【文讀音】:依《廣韻字庫》標注【台語音標】和【方音符號】
+ #-----------------------------------------------------------------
+ siann_bu, un_bu, tiau_ho = split_tai_gi_im_piau(result[0]['標音'])
+ if siann_bu == "" or siann_bu == None:
+ siann_bu = "ø"
+
+
+ # 將【聲母】、【韻母】、【聲調】,合併成【台語音標】
+ # tai_gi_im_piau = siann_bu + un_bu + tiau_ho
+ tai_gi_im_piau = ''.join([siann_bu, un_bu, tiau_ho])
+
+ # 標音法為:【十五音】或【雅俗通】,且【聲母】為空值,則將【聲母】設為【ø】
+ if (piau_im_huat == "十五音" or piau_im_huat == "雅俗通") and (siann_bu == "" or siann_bu == None):
+ siann_bu = "ø"
+ han_ji_piau_im = tng_uann_han_ji_piau_im(
+ piau_im,
+ piau_im_huat,
+ siann_bu,
+ un_bu,
+ tiau_ho
+ )
+ return tai_gi_im_piau, han_ji_piau_im
def ca_han_ji_thak_im(wb, sheet_name='漢字注音', cell='V3', hue_im="白話音", han_ji_khoo="河洛話", db_name='Ho_Lok_Ue.db', module_name='mod_河洛話', function_name='han_ji_ca_piau_im'):
# 初始化 PiauIm 類別,産生標音物件
piau_im = PiauIm(han_ji_khoo=han_ji_khoo)
piau_im_huat = wb.names['標音方法'].refers_to_range.value
# piau_im_huat = '方音符號'
+ phua_im_ji = PhuaImJi()
# 顯示「已輸入之拼音字母及注音符號」
named_range = wb.names['顯示注音輸入']
@@ -116,7 +156,7 @@ def ca_han_ji_thak_im(wb, sheet_name='漢字注音', cell='V3', hue_im="白話
han_ji = cell_value
manual_input = sheet.range((row-2, col)).value
- if manual_input:
+ if manual_input: # 若【手動輸入】的欄位有輸入
if '〔' in manual_input and '〕' in manual_input:
# 將人工輸入的〔台語音標〕轉換成【方音符號】
im_piau = manual_input.split('〔')[1].split('〕')[0]
@@ -151,76 +191,47 @@ def ca_han_ji_thak_im(wb, sheet_name='漢字注音', cell='V3', hue_im="白話
tai_gi_im_piau=tai_gi_im_piau
)
+ # 將人工輸入的【台語音標】置入【破音字庫】Dict
+ phua_im_ji.ka_phua_im_ji(han_ji, tai_gi_im_piau)
+
sheet.range((row - 1, col)).value = tai_gi_im_piau
sheet.range((row + 1, col)).value = han_ji_piau_im
+ print(f"({row}, {col_name}) = {han_ji} [{tai_gi_im_piau}] 【{han_ji_piau_im}】")
else:
- result = han_ji_ca_piau_im(cursor=cursor, han_ji=han_ji, hue_im=hue_im)
-
- if result:
- if han_ji_khoo == "河洛話":
- #-----------------------------------------------------------------
- # 【白話音】:依《河洛話漢字庫》標注【台語音標】和【方音符號】
- #-----------------------------------------------------------------
- # 將【台語音標】分解為【聲母】、【韻母】、【聲調】
- siann_bu = result[0]['聲母']
- un_bu = result[0]['韻母']
- tiau_ho = result[0]['聲調']
- # if siann_bu == "" or siann_bu == None:
- # siann_bu = "Ø"
-
- if tiau_ho == "6":
- # 若【聲調】為【6】,則將【聲調】改為【7】
- tiau_ho = "7"
-
- # 將【聲母】、【韻母】、【聲調】,合併成【台語音標】
- # tai_gi_im_piau = siann_bu + un_bu + tiau_ho
- tai_gi_im_piau = ''.join([siann_bu, un_bu, tiau_ho])
-
- # 依使用者指定之【標音方法】,將【台語音標】轉換成其所需之【漢字標音】
- # 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
- # )
-
- zu_im_list = split_tai_gi_im_piau(tai_gi_im_piau)
- if zu_im_list[0] == "" or zu_im_list[0] == None:
- siann_bu = "Ø"
- else:
- siann_bu = zu_im_list[0]
-
- han_ji_piau_im = choose_piau_im_method(
- piau_im,
- piau_im_huat,
- siann_bu,
- zu_im_list[1],
- zu_im_list[2]
- )
+ """無人工輸入則自動查找"""
+ # 查找【破音字庫】,確認是否有此漢字
+ han_ji_u_piau_im = False
+ found = phua_im_ji.ca_phua_im_ji(han_ji)
+ if found: # 若【破音字庫】有此漢字
+ siann_bu, un_bu, tiau_ho = split_tai_gi_im_piau(found)
+ tai_gi_im_piau = siann_bu + un_bu + tiau_ho
+ han_ji_piau_im = tng_uann_han_ji_piau_im(
+ piau_im,
+ piau_im_huat,
+ siann_bu,
+ un_bu,
+ tiau_ho
+ )
+ han_ji_u_piau_im = True
+ else: # 若【破音字庫】無此漢字,則在資料庫中查找
+ result = han_ji_ca_piau_im(cursor=cursor, han_ji=han_ji, hue_im=hue_im)
+ if not result:
+ msg = f"【{cell_value}】查無此字!"
else:
- #-----------------------------------------------------------------
- # 【文讀音】:依《廣韻字庫》標注【台語音標】和【方音符號】
- #-----------------------------------------------------------------
- siann_bu, un_bu, tiau_ho = split_tai_gi_im_piau(result[0]['標音'])
-
- # 將【台語音標】分解為【聲母】、【韻母】、【聲調】
- if siann_bu == "" or siann_bu == None:
- siann_bu = "Ø"
- tai_gi_im_piau = siann_bu + un_bu + tiau_ho
-
- # 依使用者指定之【標音方法】,將【台語音標】轉換成其所需之【漢字標音】
- han_ji_piau_im = tlpa_tng_han_ji_piau_im(
+ tai_gi_im_piau, han_ji_piau_im = cu_siann_un_tiau(
+ result=result,
+ han_ji_khoo=han_ji_khoo,
piau_im=piau_im,
- piau_im_huat=piau_im_huat,
- tai_gi_im_piau=tai_gi_im_piau
+ piau_im_huat=piau_im_huat
)
+ han_ji_u_piau_im = True
+
+ if han_ji_u_piau_im:
sheet.range((row - 1, col)).value = tai_gi_im_piau
sheet.range((row + 1, col)).value = han_ji_piau_im
+ print(f"({row}, {col_name}) = {han_ji} [{tai_gi_im_piau}] 【{han_ji_piau_im}】")
else:
- msg = f"【{cell_value}】查無此字!"
- if tai_gi_im_piau and han_ji_piau_im:
- print(f"({row}, {col_name}) = {han_ji} [{tai_gi_im_piau}] 【{han_ji_piau_im}】")
- else:
- print(f"({row}, {col_name}) = {msg}")
+ print(f"({row}, {col_name}) = {msg}")
index += 1
diff --git a/p730_Tng_Sing_Bang_Iah.py b/p730_Tng_Sing_Bang_Iah.py
index 5fab06c..a9419aa 100644
--- a/p730_Tng_Sing_Bang_Iah.py
+++ b/p730_Tng_Sing_Bang_Iah.py
@@ -88,11 +88,12 @@ def tng_uann_piau_im(piau_im, zu_im_huat, siann_bu, un_bu, tiau_ho):
return f"{siann}{un}{tiau_ho}"
return ""
-def concat_ruby_tag(wb, piau_im, zu_im_huat, han_ji, tai_gi_im_piau):
+
+def concat_ruby_tag(wb, piau_im, han_ji, tai_gi_im_piau):
"""將漢字、台語音標及台語注音符號,合併成一個 Ruby Tag"""
zu_im_list = split_tai_gi_im_piau(tai_gi_im_piau)
if zu_im_list[0] == "" or zu_im_list[0] == None:
- siann_bu = "Ø"
+ siann_bu = "ø"
else:
siann_bu = zu_im_list[0]
@@ -263,16 +264,14 @@ def build_web_page(wb, sheet, source_chars, total_length, page_type='含頁頭',
# =========================================================
# 將已注音之漢字加入【漢字注音表】
# =========================================================
- # 在 Console 顯示目前處理的漢字,以便使用者可知目前進度
- print(f"({row}, {col_name}) = {han_ji} [{tai_gi_im_piau}]")
-
ruby_tag = concat_ruby_tag(
wb=wb,
piau_im=piau_im, # 注音法物件
- zu_im_huat=piau_im_huat,
han_ji=han_ji,
tai_gi_im_piau=tai_gi_im_piau
)
+ # 在 Console 顯示目前處理的漢字,以便使用者可知目前進度
+ print(f"({row}, {col_name}) = {han_ji} [{tai_gi_im_piau}]")
write_buffer += ruby_tag
index += 1
diff --git a/p740_Phua_Im_Ji.py b/p740_Phua_Im_Ji.py
new file mode 100644
index 0000000..cf445fa
--- /dev/null
+++ b/p740_Phua_Im_Ji.py
@@ -0,0 +1,139 @@
+# p740_Phua_Im_Ji.py v0.0.0.1
+
+import json
+import pickle
+
+
+class PhuaImJi:
+ """
+ 注音管理器,用於管理漢字與注音對應關係。
+ """
+
+ def __init__(self, ji_tian_name="Phua_Im_Ji.json"):
+ # 破音字典存放漢字與注音
+ self.phua_im_ji_tian = {}
+ self.Ji_Tian_Name = ji_tian_name
+
+
+ def ka_phua_im_ji(self, han_ji, piau_im):
+ """
+ 將【漢字】與【注音】加入破音字典。
+
+ 參數:
+ - han_ji: str,單一漢字。
+ - piau_im: str,注音符號。
+ """
+ if len(han_ji) != 1:
+ raise ValueError("輸入的 char 必須是一個單一漢字。")
+ self.phua_im_ji_tian[han_ji] = piau_im
+ print(f"已將 {han_ji} 的注音「{piau_im}」加入破音字典。")
+
+
+ def ca_phua_im_ji(self, han_ji):
+ """
+ 查找漢字是否存在注音,返回【注音】字串或 None。
+
+ 參數:
+ - han_ji: str,單一漢字。
+
+ 返回:
+ - str 或 None:若存在於破音字典則返回注音,否則返回 None。
+ """
+ return self.phua_im_ji_tian.get(han_ji, None)
+
+
+ def save_to_file(self):
+ """
+ 將破音字典以純文字 JSON 格式存入檔案。
+ """
+ file_path = self.Ji_Tian_Name
+ with open(file_path, 'w', encoding='utf-8') as f:
+ json.dump(self.phua_im_ji_tian, f, ensure_ascii=False, indent=4)
+ print(f"破音字典已儲存至 {file_path}")
+
+
+ def load_from_file(self):
+ """
+ 從 JSON 格式檔案讀取破音字典。
+ """
+ file_path = self.Ji_Tian_Name
+ with open(file_path, 'r', encoding='utf-8') as f:
+ self.phua_im_ji_tian = json.load(f)
+ print(f"已從 {file_path} 載入破音字典")
+
+
+ def dump_phua_im_ji_tian(self):
+ """
+ 在螢幕上輸出破音字典的內容,以純文字格式顯示。
+ """
+ if not self.phua_im_ji_tian:
+ print("破音字典為空。")
+ else:
+ print("破音字典內容如下:")
+ print("{")
+ for han_ji, piau_im in self.phua_im_ji_tian.items():
+ print(f" '{han_ji}': '{piau_im}',")
+ print("}")
+
+
+ def save_to_bin_file(self, file_path):
+ """
+ 將破音字典存入檔案。
+ """
+ with open(file_path, 'wb') as f:
+ pickle.dump(self.phua_im_ji_tian, f)
+ print(f"破音字典已儲存至 {file_path}")
+
+
+ def load_from_bin_file(self, file_path):
+ """
+ 從檔案讀取破音字典。
+ """
+ with open(file_path, 'rb') as f:
+ self.phua_im_ji_tian = pickle.load(f)
+ print(f"已從 {file_path} 載入破音字典")
+
+
+# 單元測試
+if __name__ == "__main__":
+ import pickle
+
+ # phua_im_ji = PhuaImJi()
+ phua_im_ji = PhuaImJi('tmp.json')
+
+ # 手動加入破音
+ phua_im_ji.ka_phua_im_ji("行", "ㄒㄧㄥˊ")
+ phua_im_ji.ka_phua_im_ji("重", "ㄓㄨㄥˋ")
+
+ #==========================================================================
+
+ # 儲存成 JSON 純文字檔案
+ phua_im_ji.save_to_file()
+
+ # 清空內部資料結構,模擬重新載入
+ phua_im_ji.phua_im_ji_tian.clear()
+
+ # 從 JSON 檔案讀取
+ phua_im_ji.load_from_file()
+
+ # 在螢幕上輸出破音字典
+ phua_im_ji.dump_phua_im_ji_tian()
+
+ # 查詢注音
+ print(phua_im_ji.ca_phua_im_ji("行")) # 返回 "ㄒㄧㄥˊ"
+ print(phua_im_ji.ca_phua_im_ji("重")) # 返回 "ㄓㄨㄥˋ"
+ print(phua_im_ji.ca_phua_im_ji("新")) # 返回 None
+
+ #==========================================================================
+ # BIN 字典資料
+ data = {"行": "ㄒㄧㄥˊ", "重": "ㄓㄨㄥˋ"}
+
+ # 儲存至檔案
+ with open("data.pkl", "wb") as f:
+ pickle.dump(data, f)
+ print("資料已儲存至 data.pkl")
+
+ # 從檔案讀取
+ with open("data.pkl", "rb") as f:
+ loaded_data = pickle.load(f)
+ print("已載入資料:", loaded_data)
\ No newline at end of file
diff --git a/tmp.json b/tmp.json
new file mode 100644
index 0000000..8565dcd
--- /dev/null
+++ b/tmp.json
@@ -0,0 +1,4 @@
+{
+ "行": "ㄒㄧㄥˊ",
+ "重": "ㄓㄨㄥˋ"
+}
\ No newline at end of file