From 534ffed82fc9839655781036102ccae1acf47afa Mon Sep 17 00:00:00 2001 From: Alan Jui Date: Sat, 9 Nov 2024 14:02:34 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E4=BB=A5=E3=80=90=E7=89=A9=E4=BB=B6?= =?UTF-8?q?=E5=B0=8E=E5=90=91=E3=80=91=E7=94=A8=E6=B3=95=EF=BC=8C=E9=87=8D?= =?UTF-8?q?=E7=B5=84=20mod=5F=E6=A8=99=E9=9F=B3.py=20=E6=A8=A1=E7=B5=84?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\345\215\201\344\272\224\351\237\263.html" | 26 +- ...\351\237\263\347\254\246\350\231\237.html" | 120 +++--- "mod_\346\250\231\351\237\263.py" | 406 +++++++++++++++--- ...\350\251\261\351\237\263\343\200\221.xlsx" | Bin 423160 -> 423163 bytes p730_Tng_Sing_Bang_Iah.py | 325 +------------- 5 files changed, 434 insertions(+), 443 deletions(-) diff --git "a/docs/\343\200\212\346\255\270\345\216\273\344\276\206\350\276\255\343\200\213\343\200\220\346\262\263\346\264\233\347\231\275\350\251\261\351\237\263\343\200\221_\345\215\201\344\272\224\351\237\263.html" "b/docs/\343\200\212\346\255\270\345\216\273\344\276\206\350\276\255\343\200\213\343\200\220\346\262\263\346\264\233\347\231\275\350\251\261\351\237\263\343\200\221_\345\215\201\344\272\224\351\237\263.html" index 852e002..cee09b7 100644 --- "a/docs/\343\200\212\346\255\270\345\216\273\344\276\206\350\276\255\343\200\213\343\200\220\346\262\263\346\264\233\347\231\275\350\251\261\351\237\263\343\200\221_\345\215\201\344\272\224\351\237\263.html" +++ "b/docs/\343\200\212\346\255\270\345\216\273\344\276\206\350\276\255\343\200\213\343\200\220\346\262\263\346\264\233\347\231\275\350\251\261\351\237\263\343\200\221_\345\215\201\344\272\224\351\237\263.html" @@ -17,7 +17,7 @@

(規一求) (居三去) (皆五柳) (伽五英) - (干五出) (鋼五喜) (姜三曾) (艍五門) (沽五英) (姆七英) (規一求) + (干五曾) (鋼五喜) (姜三曾) (艍五門) (沽五英) (姆七英) (規一求) (居三求) (艍七曾) (居二英) (金一時) (規七英) (經五喜) (迦八英) (伽五喜) (丩五地) (恭三地) (居五柳) (江八地) (居一邊) (沽七語) (居二英) (公二英) (居一曾) (姆七英) (干三求) @@ -25,7 +25,7 @@ (巾八時) (伽五門) (沽五地) (居五求) (居七門) (鋼七喜) (江四求) (巾一求) (居七時) (居五柳) (膠七曾) (規一喜) (丩一曾) (嬌五英) (嬌五英) (居二英) (巾一去) (恭五英) - (公一喜) (嬌一頗) (嬌一頗) (居五柳) (檜一出) (居一英) + (公一喜) (嬌一頗) (嬌一頗) (居五柳) (檜一曾) (居一英) (鋼七毛) (經一曾) (艍一喜) (居二英) (經五曾) (沽七柳) (巾七喜) (巾五時) (鋼一求) (居一曾) (居一喜) (居五門) (皆二耐) (兼一曾) (經五喜) (艍二英) @@ -33,34 +33,34 @@ (公五地) (江四頗) (官一喜) (迦五雅) (居七地) (驚二求) (交七喜) (鋼五毛) (監一時) (經三求) (茄七地) (褌一喜) - (經五出) (經四求) (嬌二英) (君五曾) + (經五曾) (經四求) (嬌二英) (君五曾) (伽五喜) (丩三英) (金八入) (巾四時) (艍七英) (丩二曾) (經五英) (君一曾) (巾二英) (沽五英) (恭一時) (居二英) (艍七曾) (恭四曾) (堅二門) (驚五地) (瓜一求) (居二英) (居五英) (干五語) (瓜二英) (甘五柳) (江一他) (居二英) (迦三求) (沽七雅) (金二時) (恭五英) (經四時) (居一曾) (居七英) (干一英) - (鋼五喜) (巾八柳) (兼八時) (居二英) (驚五時) (艍三出) + (鋼五喜) (巾八柳) (兼八時) (居二英) (驚五時) (艍三曾) (鋼五毛) (規一時) (堅四時) (居五柳) (姜五時) (觀一求) - (經四出) (沽五頗) (交七柳) (居二英) (交五柳) (伽三去) + (經四曾) (沽五頗) (交七柳) (居二英) (交五柳) (伽三去) (居五時) (嬌二求) (丩二時) (居五柳) (膠五喜) (觀一求) - (君五喜) (高五門) (金一時) (居二英) (君四出) (丩七時) + (君五喜) (高五門) (金一時) (居二英) (君四曾) (丩七時) (嬌二曾) (觀七求) (檜一邊) (居五柳) (皆一曾) (觀五喜) (經二求) (伽三英) (伽三英) (居二英) (姜三曾) (金八入) - (艍二喜) (沽一求) (經五出) (居五柳) (官五邊) (觀五喜) + (艍二喜) (沽一求) (經五曾) (居五柳) (官五邊) (觀五喜)

(規一求) (居三去) (皆五柳) (伽五英) - (驚二出) (巾四時) (膠一求) (居二英) (觀八曾) (丩五英) + (驚二曾) (巾四時) (膠一求) (居二英) (觀八曾) (丩五英) (伽三時) (艍二英) (瓜二語) (居五柳) (牛一時) (居五英) (公四喜) (膠三求) (干五語) (伽五英) (堅一英) (丩五求) - (堅八英) (巾一出) (經四出) (居一曾) (經五曾) (瓜七喜) + (堅八英) (巾一曾) (經四曾) (居一曾) (經五曾) (瓜七喜) (高八柳) (金五去) (艍一曾) (居二英) (嬌一時) (丩一英) - (公五柳) (江五柳) (高三求) (艍五英) (居二英) (君一出) (金八求) + (公五柳) (江五柳) (高三求) (艍五英) (居二英) (君一曾) (金八求) (姜三曾) (艍七英) (皆七地) (姑三喜) 西(皆一時) (丩五地) - (迦八英) (迦七毛) (君一求) (迦一出) + (迦八英) (迦七毛) (君一求) (迦一曾) (迦八英) (交七曾) (沽一求) (丩一曾) - (居三求) (嬌二英) (嬌二他) (居二英) (檜七出) (公四喜) + (居三求) (嬌二英) (嬌二他) (居二英) (檜七曾) (公四喜) (迦八英) (迦七求) (艍一去) (居五柳) (經一求) (艍一去) (江八門) (金一喜) (金一喜) (居二英) (恭三喜) (經五英) (官五曾) (觀一求) (觀一求) (居五柳) (艍二時) (交五柳) @@ -77,7 +77,7 @@ (乖五喜) (姜五柳) (巾五時) (居二英) (沽一求) (公二英) (迦八英) (巾八時) (鋼七他) (居五柳) (君五英) (艍二曾) (經一地) (江一地) (高一求) (居二英) (沽一時) (嬌三時) - (金五柳) (梔一出) (交五柳) (居五柳) (艍三喜) (居一時) + (金五柳) (梔一曾) (交五柳) (居五柳) (艍三喜) (居一時) (嬌五柳) (經五時) (瓜三喜) (居二英) (規一求) (巾七曾) (高八柳) (艍一喜) (梔一他) (迦七毛) (公四喜) (伽五喜) (居五語)

diff --git "a/docs/\343\200\212\346\255\270\345\216\273\344\276\206\350\276\255\343\200\213\343\200\220\346\262\263\346\264\233\347\231\275\350\251\261\351\237\263\343\200\221_\346\226\271\351\237\263\347\254\246\350\231\237.html" "b/docs/\343\200\212\346\255\270\345\216\273\344\276\206\350\276\255\343\200\213\343\200\220\346\262\263\346\264\233\347\231\275\350\251\261\351\237\263\343\200\221_\346\226\271\351\237\263\347\254\246\350\231\237.html" index 89eaac6..91168a8 100644 --- "a/docs/\343\200\212\346\255\270\345\216\273\344\276\206\350\276\255\343\200\213\343\200\220\346\262\263\346\264\233\347\231\275\350\251\261\351\237\263\343\200\221_\346\226\271\351\237\263\347\254\246\350\231\237.html" +++ "b/docs/\343\200\212\346\255\270\345\216\273\344\276\206\350\276\255\343\200\213\343\200\220\346\262\263\346\264\233\347\231\275\350\251\261\351\237\263\343\200\221_\346\226\271\351\237\263\347\254\246\350\231\237.html" @@ -16,70 +16,70 @@

- (ㄍㄨㄧ) (ㄎㄧ˪) (ㄌㄞˊ) (ㆤˊ) - (ㄘㄢˊ) (ㄏㆭˊ) (ㄐㄧㄤ˪) (ㆠㄨˊ) (ㆦˊ) (ㆬ˫) (ㄍㄨㄧ) - (ㄍㄧ˪) (ㄗㄨ˫) (ㄧˋ) (ㄒㄧㆬ) (ㄨㄧ˫) (ㄏㄧㄥˊ) (ㄧㄚㆷ˙) - (ㄏㆤˊ) (ㄉㄧㄨˊ) (ㄉㄧㆲ˪) (ㄌㄧˊ) (ㄉㄚㆻ˙) (ㄅㄧ) - (ㆣㆦ˫) (ㄧˋ) (ㆲˋ) (ㄐㄧ) (ㆬ˫) (ㄍㄢ˪) - (ㄗㄞ) (ㄌㄞˊ) (ㄐㄧㄚˋ) (ㄐㄧ) (ㄎㄜˋ) (ㄉㄨㄧ) - (ㄒㄧㆵ˙) (ㆠㆤˊ) (ㄉㆦˊ) (ㄍㄧˊ) (ㆠㄧ˫) (ㄏㆭ˫) - (ㄍㄚㆻ) (ㄍㄧㄣ) (ㄒㄧ˫) (ㄌㄧˊ) (ㄗㄚ˫) (ㄏㄨㄧ) - (ㄐㄧㄨ) (ㄧㄠˊ) (ㄧㄠˊ) (ㄧˋ) (ㄎㄧㄣ) (ㄧㆲˊ) - (ㄏㆲ) (ㄆㄧㄠ) (ㄆㄧㄠ) (ㄌㄧˊ) (ㄘㄨㆤ) () - (ㄇㆭ˫) (ㄐㄧㄥ) (ㄏㄨ) (ㄧˋ) (ㄐㄧㄥˊ) (ㄌㆦ˫) - (ㄏㄧㄣ˫) (ㄒㄧㄣˊ) (ㄍㆭ) (ㄐㄧ) (ㄏㄧ) (ㆠㄧˊ) - (ㄋㄞˋ) (ㄐㄧㆰ) (ㄏㄧㄥˊ) (ㄨˋ) - (ㄗㄞˋ) (ㄏㄧㆬ) (ㄗㄞˋ) (ㄆㄨㄣ) - (ㄉㆲˊ) (ㄆㄚㆻ) (ㄏㄨㆩ) (ㄫㄧㄚˊ) - (ㄉㄧ˫) (ㄍㄧㆩˋ) (ㄏㄠ˫) (ㄇㆭˊ) - (ㄙㆩ) (ㄍㄧㄥ˪) (ㄉㄧㄜ˫) (ㄏㄨㆪ) - (ㄑㄧㄥˊ) (ㄍㄧㆻ) (ㄧㄠˋ) (ㄗㄨㄣˊ) - (ㄏㆤˊ) (ㄧㄨ˪) (ㆢㄧㆴ˙) (ㄒㄧㆵ) - (ㄨ˫) (ㄐㄧㄨˋ) (ㄧㄥˊ) (ㄗㄨㄣ) - (ㄧㄣˋ) (ㆦˊ) (ㄒㄧㆲ) (ㄧˋ) (ㄗㄨ˫) (ㄐㄧㆦㆻ) - (ㆠㄧㄢˋ) (ㄉㄧㆩˊ) (ㄍㄨㄚ) (ㄧˋ) (ㄧˊ) (ㆣㄢˊ) - (ㄨㄚˋ) (ㄌㆰˊ) (ㄊㄤ) (ㄧˋ) (ㄍㄧㄚ˪) (ㄫㆦ˫) - (ㄒㄧㆬˋ) (ㄧㆲˊ) (ㄒㄧㆻ) (ㄐㄧ) (ㄧ˫) () - (ㄏㆭˊ) (ㄌㄧㆵ˙) (ㄒㄧㄚㆴ˙) (ㄧˋ) (ㄒㄧㆩˊ) (ㄘㄨ˪) - (ㄇㆭˊ) (ㄙㄨㄧ) (ㄒㄧㄚㆵ) (ㄌㄧˊ) (ㄒㄧㄤˊ) (ㄍㄨㄢ) - (ㄑㄧㆻ) (ㄆㆦˊ) (ㄌㄠ˫) (ㄧˋ) (ㄌㄠˊ) (ㄎㆤ˪) - (ㄒㄧˊ) (ㄍㄧㄠˋ) (ㄒㄧㄨˋ) (ㄌㄧˊ) (ㄏㄚˊ) (ㄍㄨㄢ) - (ㄏㄨㄣˊ) (ㆠㄜˊ) (ㄒㄧㆬ) (ㄧˋ) (ㄘㄨㆵ) (ㄒㄧㄨ˫) - (ㄐㄧㄠˋ) (ㄍㄨㄢ˫) (ㄅㄨㆤ) (ㄌㄧˊ) (ㄗㄞ) (ㄏㄨㄢˊ) - (ㄍㄧㄥˋ) (ㆤ˪) (ㆤ˪) (ㄧˋ) (ㄐㄧㄤ˪) (ㆢㄧㆴ˙) - (ㄏㄨˋ) (ㄍㆦ) (ㄑㄧㄥˊ) (ㄌㄧˊ) (ㄅㄨㆩˊ) (ㄏㄨㄢˊ) + kui1(ㄍㄨㄧ) khi3(ㄎㄧ˪) lai5(ㄌㄞˊ) e5(ㆤˊ) + can5(ㄗㄢˊ) hng5(ㄏㆭˊ) ziang3(ㄐㄧㄤ˪) bu5(ㆠㄨˊ) oo5(ㆦˊ) m7(ㆬ˫) kui1(ㄍㄨㄧ) + ki3(ㄍㄧ˪) zu7(ㄗㄨ˫) i2(ㄧˋ) sim1(ㄒㄧㆬ) ui7(ㄨㄧ˫) hing5(ㄏㄧㄥˊ) iah8(ㄧㄚㆷ˙) + he5(ㄏㆤˊ) tiu5(ㄉㄧㄨˊ) tiong3(ㄉㄧㆲ˪) li5(ㄌㄧˊ) tak8(ㄉㄚㆻ˙) pi1(ㄅㄧ) + goo7(ㆣㆦ˫) i2(ㄧˋ) ong2(ㆲˋ) zi1(ㄐㄧ) m7(ㆬ˫) kan3(ㄍㄢ˪) + zai1(ㄗㄞ) lai5(ㄌㄞˊ) zia2(ㄐㄧㄚˋ) zi1(ㄐㄧ) kho2(ㄎㄜˋ) tui1(ㄉㄨㄧ) + sit8(ㄒㄧㆵ˙) be5(ㆠㆤˊ) too5(ㄉㆦˊ) ki5(ㄍㄧˊ) bi7(ㆠㄧ˫) hng7(ㄏㆭ˫) + kak4(ㄍㄚㆻ) kin1(ㄍㄧㄣ) si7(ㄒㄧ˫) li5(ㄌㄧˊ) za7(ㄗㄚ˫) hui1(ㄏㄨㄧ) + ziu1(ㄐㄧㄨ) iau5(ㄧㄠˊ) iau5(ㄧㄠˊ) i2(ㄧˋ) khin1(ㄎㄧㄣ) iong5(ㄧㆲˊ) + hong1(ㄏㆲ) phiau1(ㄆㄧㄠ) phiau1(ㄆㄧㄠ) li5(ㄌㄧˊ) cue1(ㄗㄨㆤ) i1() + mng7(ㄇㆭ˫) zing1(ㄐㄧㄥ) hu1(ㄏㄨ) i2(ㄧˋ) zing5(ㄐㄧㄥˊ) loo7(ㄌㆦ˫) + hin7(ㄏㄧㄣ˫) sin5(ㄒㄧㄣˊ) kng1(ㄍㆭ) zi1(ㄐㄧ) hi1(ㄏㄧ) bi5(ㆠㄧˊ) + nai2(ㄋㄞˋ) ziam1(ㄐㄧㆰ) hing5(ㄏㄧㄥˊ) u2(ㄨˋ) + zai2(ㄗㄞˋ) him1(ㄏㄧㆬ) zai2(ㄗㄞˋ) phun1(ㄆㄨㄣ) + tong5(ㄉㆲˊ) phak4(ㄆㄚㆻ) huann1(ㄏㄨㆩ) ngia5(ㄫㄧㄚˊ) + ti7(ㄉㄧ˫) kiann2(ㄍㄧㆩˋ) hau7(ㄏㄠ˫) mng5(ㄇㆭˊ) + sann1(ㄙㆩ) king3(ㄍㄧㄥ˪) tio7(ㄉㄧㄜ˫) huinn1(ㄏㄨㆪ) + cing5(ㄐㄧㄥˊ) kik4(ㄍㄧㆻ) iau2(ㄧㄠˋ) zun5(ㄗㄨㄣˊ) + he5(ㄏㆤˊ) iu3(ㄧㄨ˪) jip8(ㆢㄧㆴ˙) sit4(ㄒㄧㆵ) + u7(ㄨ˫) ziu2(ㄐㄧㄨˋ) ing5(ㄧㄥˊ) zun1(ㄗㄨㄣ) + in2(ㄧㄣˋ) oo5(ㆦˊ) siong1(ㄒㄧㆲ) i2(ㄧˋ) zu7(ㄗㄨ˫) ziok4(ㄐㄧㆦㆻ) + bian2(ㆠㄧㄢˋ) tiann5(ㄉㄧㆩˊ) kua1(ㄍㄨㄚ) i2(ㄧˋ) i5(ㄧˊ) gan5(ㆣㄢˊ) + ua2(ㄨㄚˋ) lam5(ㄌㆰˊ) thang1(ㄊㄤ) i2(ㄧˋ) kia3(ㄍㄧㄚ˪) ngoo7(ㄫㆦ˫) + sim2(ㄒㄧㆬˋ) iong5(ㄧㆲˊ) sik4(ㄒㄧㆻ) zi1(ㄐㄧ) i7(ㄧ˫) an1() + hng5(ㄏㆭˊ) lit8(ㄌㄧㆵ˙) siap8(ㄒㄧㄚㆴ˙) i2(ㄧˋ) siann5(ㄒㄧㆩˊ) cu3(ㄗㄨ˪) + mng5(ㄇㆭˊ) sui1(ㄙㄨㄧ) siat4(ㄒㄧㄚㆵ) li5(ㄌㄧˊ) siang5(ㄒㄧㄤˊ) kuan1(ㄍㄨㄢ) + cik4(ㄐㄧㆻ) phoo5(ㄆㆦˊ) lau7(ㄌㄠ˫) i2(ㄧˋ) lau5(ㄌㄠˊ) khe3(ㄎㆤ˪) + si5(ㄒㄧˊ) kiau2(ㄍㄧㄠˋ) siu2(ㄒㄧㄨˋ) li5(ㄌㄧˊ) ha5(ㄏㄚˊ) kuan1(ㄍㄨㄢ) + hun5(ㄏㄨㄣˊ) bo5(ㆠㄜˊ) sim1(ㄒㄧㆬ) i2(ㄧˋ) cut4(ㄗㄨㆵ) siu7(ㄒㄧㄨ˫) + ziau2(ㄐㄧㄠˋ) kuan7(ㄍㄨㄢ˫) pue1(ㄅㄨㆤ) li5(ㄌㄧˊ) zai1(ㄗㄞ) huan5(ㄏㄨㄢˊ) + king2(ㄍㄧㄥˋ) e3(ㆤ˪) e3(ㆤ˪) i2(ㄧˋ) ziang3(ㄐㄧㄤ˪) jip8(ㆢㄧㆴ˙) + hu2(ㄏㄨˋ) koo1(ㄍㆦ) cing5(ㄐㄧㄥˊ) li5(ㄌㄧˊ) puann5(ㄅㄨㆩˊ) huan5(ㄏㄨㄢˊ)

- (ㄍㄨㄧ) (ㄎㄧ˪) (ㄌㄞˊ) (ㆤˊ) - (ㄑㄧㆩˋ) (ㄒㄧㆵ) (ㄍㄚ) (ㄧˋ) (ㄗㄨㄚㆵ˙) (ㄧㄨˊ) - (ㄙㆤ˪) (ㄨˋ) (ㆣㄨㄚˋ) (ㄌㄧˊ) (ㄒㄧㆫ) (ㄧˊ) - (ㄏㆦㆻ) (ㄍㄚ˪) (ㆣㄢˊ) (ㆤˊ) (ㄧㄢ) (ㄍㄧㄨˊ) - (ㄧㄚㆵ˙) (ㄑㄧㄣ) (ㄑㄧㆻ) (ㄐㄧ) (ㄐㄧㄥˊ) (ㄏㄨㄚ˫) - (ㄌㄜㆷ˙) (ㄎㄧㆬˊ) (ㄗㄨ) (ㄧˋ) (ㄒㄧㄠ) (ㄧㄨ) - (ㄌㆲˊ) (ㄌㄤˊ) (ㄍㄜ˪) (ㄨˊ) (ㄧˋ) (ㄘㄨㄣ) (ㄍㄧㆴ˙) - (ㄐㄧㄤ˪) (ㄨ˫) (ㄉㄞ˫) (ㄏㆧ˪) 西(ㄙㄞ) (ㄉㄧㄨˊ) - (ㄧㄚㆷ˙) (ㄇㄧㄚ˫) (ㄍㄨㄣ) (ㄑㄧㄚ) - (ㄧㄚㆷ˙) (ㄗㄠ˫) (ㄍㆦ) (ㄐㄧㄨ) - (ㄍㄧ˪) (ㄧㄠˋ) (ㄊㄧㄠˋ) (ㄧˋ) (ㄘㄨㆤ˫) (ㄏㆦㆻ) - (ㄧㄚㆷ˙) (ㄍㄧㄚ˫) (ㄎㄨ) (ㄌㄧˊ) (ㄍㄧㄥ) (ㄎㄨ) - (ㆠㄚㆻ˙) (ㄏㄧㆬ) (ㄏㄧㆬ) (ㄧˋ) (ㄏㄧㆲ˪) (ㄧㄥˊ) - (ㄗㄨㆩˊ) (ㄍㄨㄢ) (ㄍㄨㄢ) (ㄌㄧˊ) (ㄙㄨˋ) (ㄌㄠˊ) - (ㄒㄧㄢ˫) (ㆠㄢ˫) (ㄇㄧㆷ˙) (ㄐㄧ) (ㄉㄧㆵ) (ㄒㄧˊ) - (ㄍㆰˋ) (ㄫㆦˊ) (ㄙㆥ) (ㄐㄧ) (ㄍㄧㆩˊ) (ㄏㄧㄨ) + kui1(ㄍㄨㄧ) khi3(ㄎㄧ˪) lai5(ㄌㄞˊ) e5(ㆤˊ) + ciann2(ㄐㄧㆩˋ) sit4(ㄒㄧㆵ) ka1(ㄍㄚ) i2(ㄧˋ) zuat8(ㄗㄨㄚㆵ˙) iu5(ㄧㄨˊ) + se3(ㄙㆤ˪) u2(ㄨˋ) gua2(ㆣㄨㄚˋ) li5(ㄌㄧˊ) siunn1(ㄒㄧㆫ) i5(ㄧˊ) + hok4(ㄏㆦㆻ) ka3(ㄍㄚ˪) gan5(ㆣㄢˊ) e5(ㆤˊ) ian1(ㄧㄢ) kiu5(ㄍㄧㄨˊ) + iat8(ㄧㄚㆵ˙) cin1(ㄐㄧㄣ) cik4(ㄐㄧㆻ) zi1(ㄐㄧ) zing5(ㄐㄧㄥˊ) hua7(ㄏㄨㄚ˫) + loh8(ㄌㄜㆷ˙) khim5(ㄎㄧㆬˊ) zu1(ㄗㄨ) i2(ㄧˋ) siau1(ㄒㄧㄠ) iu1(ㄧㄨ) + long5(ㄌㆲˊ) lang5(ㄌㄤˊ) ko3(ㄍㄜ˪) u5(ㄨˊ) i2(ㄧˋ) cun1(ㄗㄨㄣ) kip8(ㄍㄧㆴ˙) + ziang3(ㄐㄧㄤ˪) u7(ㄨ˫) tai7(ㄉㄞ˫) hoonn3(ㄏㆧ˪) 西sai1(ㄙㄞ) tiu5(ㄉㄧㄨˊ) + iah8(ㄧㄚㆷ˙) mia7(ㄇㄧㄚ˫) kun1(ㄍㄨㄣ) cia1(ㄐㄧㄚ) + iah8(ㄧㄚㆷ˙) zau7(ㄗㄠ˫) koo1(ㄍㆦ) ziu1(ㄐㄧㄨ) + ki3(ㄍㄧ˪) iau2(ㄧㄠˋ) thiau2(ㄊㄧㄠˋ) i2(ㄧˋ) cue7(ㄗㄨㆤ˫) hok4(ㄏㆦㆻ) + iah8(ㄧㄚㆷ˙) kia7(ㄍㄧㄚ˫) khu1(ㄎㄨ) li5(ㄌㄧˊ) king1(ㄍㄧㄥ) khu1(ㄎㄨ) + bak8(ㆠㄚㆻ˙) him1(ㄏㄧㆬ) him1(ㄏㄧㆬ) i2(ㄧˋ) hiong3(ㄏㄧㆲ˪) ing5(ㄧㄥˊ) + zuann5(ㄗㄨㆩˊ) kuan1(ㄍㄨㄢ) kuan1(ㄍㄨㄢ) li5(ㄌㄧˊ) su2(ㄙㄨˋ) lau5(ㄌㄠˊ) + sian7(ㄒㄧㄢ˫) ban7(ㆠㄢ˫) mih8(ㄇㄧㆷ˙) zi1(ㄐㄧ) tit4(ㄉㄧㆵ) si5(ㄒㄧˊ) + kam2(ㄍㆰˋ) ngoo5(ㄫㆦˊ) senn1(ㄙㆥ) zi1(ㄐㄧ) kiann5(ㄍㄧㆩˊ) hiu1(ㄏㄧㄨ)

- (ㄧˋ) (ㄧˋ) (ㄏㆧ˪) - (ㆣㄨ˫) (ㄏㄧㄥˊ) (ㄨˋ) (ㄌㄞ˫) (ㄏㆦㆻ) (ㄍㄨㄧˋ) (ㄒㄧˊ) - (ㄏㄚㆵ) (ㆬ˫) (ㄨㄧˋ) (ㄒㄧㆬ) (ㆢㄧㆬ˫) (ㄎㄧ˪) (ㄌㄠˊ) - (ㆦˊ) (ㄨㄧ˫) (ㄏㆲˊ) (ㄏㆲˊ) (ㆠㆤㆷ) (ㄏㄜˊ) (ㄐㄧ) - (ㄏㄨ˪) (ㄍㄨㄧ˪) (ㄏㄨㄧ) (ㄫㆦˊ) (ㆣㄨㄢ˫) - (ㄉㆤ˪) (ㄏㄧㄤ) (ㆬ˫) (ㄎㄜˋ) (ㄍㄧˊ) - (ㄏㄨㄞˊ) (ㄌㄧㄤˊ) (ㄒㄧㄣˊ) (ㄧˋ) (ㄍㆦ) (ㆲˋ) - (ㄧㄚㆷ˙) (ㄒㄧㆵ˙) (ㄊㆭ˫) (ㄌㄧˊ) (ㄨㄣˊ) (ㄗㄨˋ) - (ㄉㄧㄥ) (ㄉㄤ) (ㄍㄜ) (ㄧˋ) (ㄙㆦ) (ㄒㄧㄠ˪) - (ㄌㄧㆬˊ) (ㄘㆪ) (ㄌㄠˊ) (ㄌㄧˊ) (ㄏㄨ˪) (ㄒㄧ) - (ㄌㄧㄠˊ) (ㄒㄧㄥˊ) (ㄏㄨㄚ˪) (ㄧˋ) (ㄍㄨㄧ) (ㄐㄧㄣ˫) - (ㄌㄜㆷ˙) (ㄏㄨ) (ㄊㆪ) (ㄇㄧㄚ˫) (ㄏㆦㆻ) (ㄏㆤˊ) (ㆣㄧˊ) + i2(ㄧˋ) i2(ㄧˋ) hoonn3(ㄏㆧ˪) + gu7(ㆣㄨ˫) hing5(ㄏㄧㄥˊ) u2(ㄨˋ) lai7(ㄌㄞ˫) hok4(ㄏㆦㆻ) kui2(ㄍㄨㄧˋ) si5(ㄒㄧˊ) + hat4(ㄏㄚㆵ) m7(ㆬ˫) ui2(ㄨㄧˋ) sim1(ㄒㄧㆬ) jim7(ㆢㄧㆬ˫) khi3(ㄎㄧ˪) lau5(ㄌㄠˊ) + oo5(ㆦˊ) ui7(ㄨㄧ˫) hong5(ㄏㆲˊ) hong5(ㄏㆲˊ) beh4(ㆠㆤㆷ) ho5(ㄏㄜˊ) zi1(ㄐㄧ) + hu3(ㄏㄨ˪) kui3(ㄍㄨㄧ˪) hui1(ㄏㄨㄧ) ngoo5(ㄫㆦˊ) guan7(ㆣㄨㄢ˫) + te3(ㄉㆤ˪) hiang1(ㄏㄧㄤ) m7(ㆬ˫) kho2(ㄎㄜˋ) ki5(ㄍㄧˊ) + huai5(ㄏㄨㄞˊ) liang5(ㄌㄧㄤˊ) sin5(ㄒㄧㄣˊ) i2(ㄧˋ) koo1(ㄍㆦ) ong2(ㆲˋ) + iah8(ㄧㄚㆷ˙) sit8(ㄒㄧㆵ˙) thng7(ㄊㆭ˫) li5(ㄌㄧˊ) un5(ㄨㄣˊ) zu2(ㄗㄨˋ) + ting1(ㄉㄧㄥ) tang1(ㄉㄤ) ko1(ㄍㄜ) i2(ㄧˋ) soo1(ㄙㆦ) siau3(ㄒㄧㄠ˪) + lim5(ㄌㄧㆬˊ) cinn1(ㄗㆪ) lau5(ㄌㄠˊ) li5(ㄌㄧˊ) hu3(ㄏㄨ˪) si1(ㄒㄧ) + liau5(ㄌㄧㄠˊ) sing5(ㄒㄧㄥˊ) hua3(ㄏㄨㄚ˪) i2(ㄧˋ) kui1(ㄍㄨㄧ) zin7(ㄐㄧㄣ˫) + loh8(ㄌㄜㆷ˙) hu1(ㄏㄨ) thinn1(ㄊㆪ) mia7(ㄇㄧㄚ˫) hok4(ㄏㆦㆻ) he5(ㄏㆤˊ) gi5(ㆣㄧˊ)

diff --git "a/mod_\346\250\231\351\237\263.py" "b/mod_\346\250\231\351\237\263.py" index 60c1090..f62cc60 100644 --- "a/mod_\346\250\231\351\237\263.py" +++ "b/mod_\346\250\231\351\237\263.py" @@ -1,7 +1,6 @@ import re import sqlite3 -global Siann_Bu_Dict, Un_Bu_Dict # ========================================================= # 判斷是否為標點符號的輔助函數 @@ -219,71 +218,358 @@ def dict_to_str(zu_im_hu_ho): return f"{zu_im_hu_ho['聲母']}{zu_im_hu_ho['韻母']}{zu_im_hu_ho['聲調']}" -def init_piau_im_dict(han_ji_khoo): - if han_ji_khoo == "河洛話": - db_name = 'Ho_Lok_Ue.db' - else: - db_name = 'Kong_Un.db' - - conn = sqlite3.connect(db_name) - cursor = conn.cursor() - - Siann_Bu_Dict = init_siann_bu_dict(cursor) - Un_Bu_Dict = init_un_bu_dict(cursor) - - conn.close() - - return Siann_Bu_Dict, Un_Bu_Dict - - -def init_siann_bu_dict(cursor): - # 執行 SQL 查詢 - cursor.execute("SELECT * FROM 聲母對照表") - - # 獲取所有資料 - rows = cursor.fetchall() - - # 初始化字典 - 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], +class PiauIm: + + TONE_MARKS = { + "十五音": { + 1: "一", + 2: "二", + 3: "三", + 4: "四", + 5: "五", + 7: "七", + 8: "八" + }, + "方音符號": { + 1: "", + 2: "ˋ", + 3: "˪", + 4: "", + 5: "ˊ", + 7: "˫", + 8: "\u02D9" + }, + "閩拼方案": { + 1: "\u0304", + 2: "\u0341", + 3: "\u030C", + 5: "\u0300", + 6: "\u0302", + 7: "\u0304", + 8: "\u0341" + }, + "台羅拼音": { + 1: "", + 2: "\u0301", + 3: "\u0300", + 4: "", + 5: "\u0302", + 6: "\u030C", + 7: "\u0304", + 8: "\u030D" } + } - return siann_bu_dict - - -def init_un_bu_dict(cursor): - # 執行 SQL 查詢 - cursor.execute("SELECT * FROM 韻母對照表") + def __init__(self, han_ji_khoo): + self.Siann_Bu_Dict = None + self.Un_Bu_Dict = None + self.init_piau_im_dict(han_ji_khoo) + self.pattern1 = re.compile(r"(uai|uan|uah|ueh|ee|ei|oo)", re.I) + self.pattern2 = re.compile(r"(o|e|a|u|i|ng|m)", re.I) + + def _init_siann_bu_dict(self, cursor): + # 執行 SQL 查詢 + cursor.execute("SELECT * FROM 聲母對照表") + + # 獲取所有資料 + rows = cursor.fetchall() + + # 初始化字典 + 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 查詢 + cursor.execute("SELECT * FROM 韻母對照表") + + # 獲取所有資料 + rows = cursor.fetchall() + + # 初始化字典 + un_bu_dict = {} + + # 從查詢結果中提取資料並將其整理成一個字典 + for row in rows: + un_bu_dict[row[1]] = { + '台語音標': row[1], + '國際音標': row[2], + '台羅拼音': row[3], + '白話字': row[4], + '閩拼方案': row[5], + '方音符號': row[6], + '十五音': row[7], + '十五音舒促聲': row[8], + '十五音序': int(row[9]), + } + return un_bu_dict + + def init_piau_im_dict(self, han_ji_khoo): + if han_ji_khoo == "河洛話": + db_name = 'Ho_Lok_Ue.db' + else: + db_name = 'Kong_Un.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) + + #================================================================ + # 在韻母加調號:白話字(POJ)與台羅(TL)同 + #================================================================ + def un_bu_ga_tiau_ho(self, guan_im, tiau): + tiau_hu_dict = { + 1: "", + 2: "\u0301", + 3: "\u0300", + 4: "", + 5: "\u0302", + 6: "\u030C", + 7: "\u0304", + 8: "\u030D", + 9: "\u030B", + } + guan_im_u_ga_tiau_ho = f"{guan_im}{tiau_hu_dict[int(tiau)]}" + return guan_im_u_ga_tiau_ho + + #================================================================ + # 在韻母加調號:閩拼方案(BP) + #================================================================ + def bp_un_bu_ga_tiau_ho(self, guan_im, tiau): + tiau_hu_dict = { + 1: "\u0304", # 陰平 + 2: "\u0341", # 陽平 + 3: "\u030C", # 上声 + 5: "\u0300", # 陰去 + 6: "\u0302", # 陽去 + 7: "\u0304", # 陰入 + 8: "\u0341", # 陽入 + } + return f"{guan_im}{tiau_hu_dict[tiau]}" - # 獲取所有資料 - rows = cursor.fetchall() + #================================================================ + # 台羅拼音(TL) + # 順序:《o>e>a>u>i>ng>m》;而 ng 標示在字母 n 上。 + #================================================================ + def TL_piau_im(self, siann_bu, un_bu, tiau_ho): + piau_im_huat = "台羅拼音" - # 初始化字典 - un_bu_dict = {} + if siann_bu == None or siann_bu == "Ø": + siann = "" + else: + siann = self.Siann_Bu_Dict[siann_bu][piau_im_huat] + + un = self.Un_Bu_Dict[un_bu][piau_im_huat] + piau_im = f"{siann}{un}" + + # 韻母為複元音 + searchObj = self.pattern1.search(piau_im) + if searchObj: + found = searchObj.group(1) + un_chars = list(found) + idx = 0 + if found == "ee" or found == "ei" or found == "oo": + idx = 0 + else: + # found = uai/uan/uah/ueh + idx = 1 + guan_im = un_chars[idx] + un_chars[idx] = self.un_bu_ga_tiau_ho(guan_im, tiau_ho) + un_str = "".join(un_chars) + piau_im = piau_im.replace(found, un_str) + else: + # 韻母為單元音或鼻音韻 + searchObj2 = self.pattern2.search(piau_im) + if searchObj2: + found = searchObj2.group(1) + guan_im = found + new_un = self.un_bu_ga_tiau_ho(guan_im, tiau_ho) + piau_im = piau_im.replace(found, new_un) + + return piau_im + + #================================================================ + # 白話字(POJ) + # 順序:《o>e>a>u>i>ng>m》;而 ng 標示在字母 n 上。 + # 例外: + # - oai、oan、oat、oah 標在 a 上。 + # - oeh 標在 e 上。 + #================================================================ + def POJ_piau_im(self, siann_bu, un_bu, tiau_ho): + piau_im_huat = "白話字" + + if siann_bu == None or siann_bu == "Ø": + siann = "" + else: + siann = self.Siann_Bu_Dict[siann_bu][piau_im_huat] + + un = self.Un_Bu_Dict[un_bu][piau_im_huat] + piau_im = f"{siann}{un}" + + # 韻母為複元音 + POJ_pattern1 = r"(oai|oan|oah|oeh|ee|ei)" + searchObj = re.search(POJ_pattern1, piau_im, re.M | re.I) + if searchObj: + found = searchObj.group(1) + un_chars = list(found) + idx = 0 + if found == "ee" or found == "ei": + idx = 0 + else: + # found = oai/oan/oah/oeh + idx = 1 + guan_im = un_chars[idx] + un_chars[idx] = self.un_bu_ga_tiau_ho(guan_im, tiau_ho) + un_str = "".join(un_chars) + piau_im = piau_im.replace(found, un_str) + else: + # 韻母為單元音或鼻音韻 + POJ_pattern2 = r"(o|e|a|u|i|ng|m)" + searchObj2 = re.search(POJ_pattern2, piau_im, re.M | re.I) + if searchObj2: + found = searchObj2.group(1) + guan_im = found + new_un = self.un_bu_ga_tiau_ho(guan_im, tiau_ho) + piau_im = piau_im.replace(found, new_un) + + return piau_im + + #================================================================ + # 閩拼(BP) + # + # 【調號標示規則】 + # 當一個音節有多個字母時,調號得標示在響度最大的字母上面(通常在韻腹)。由規則可以判定確切的字母: + # + # - 響度優先順序: a > oo > (e = o) > (i = u)〈低元音 > 高元音 > 無擦通音 > 擦音 > 塞音〉 + # - 二合字母 iu 及 ui ,調號都標在後一個字母上;因為前一個字母是介音。 + # - m 作韻腹時則標於字母 m 上。 + # - 二合字母 oo 及 ng,標於前一個字母上;比如 ng 標示在字母 n 上。 + # - 三合字母 ere,標於最後的字母 e 上。 + #================================================================ + def BP_piau_im(self, siann_bu, un_bu, tiau_ho): + piau_im_huat = "閩拼方案" + # 將「台羅八聲調」轉換成閩拼使用的調號 + tiau_ho_remap_for_BP = { + 1: 1, # 陰平: 44 + 2: 3, # 上聲:53 + 3: 5, # 陰去:21 + 4: 7, # 上聲:53 + 5: 2, # 陽平:24 + 7: 6, # 陰入:3? + 8: 8, # 陽入:4? + } - # 從查詢結果中提取資料並將其整理成一個字典 - for row in rows: - un_bu_dict[row[1]] = { - '台語音標': row[1], - '國際音標': row[2], - '台羅拼音': row[3], - '白話字': row[4], - '閩拼方案': row[5], - '方音符號': row[6], - '十五音': row[7], - '十五音舒促聲': row[8], - '十五音序': int(row[9]), + if siann_bu == None or siann_bu == "Ø": + siann = "" + else: + siann = self.Siann_Bu_Dict[siann_bu][piau_im_huat] + + un = self.Un_Bu_Dict[un_bu][piau_im_huat] + piau_im = f"{siann}{un}" + + # 當聲母為「空白」,韻母為:i 或 u 時,調整聲母 + un_chars = list(un) + if siann == "": + if un_chars[0] == "i": + siann = "y" + elif un_chars[0] == "u": + siann = "w" + + pattern = r"(a|oo|ere|iu|ui|ng|e|o|i|u|m)" + searchObj = re.search(pattern, piau_im, re.M | re.I) + + if searchObj: + found = searchObj.group(1) + un_chars = list(found) + idx = 0 + if found == "iu" or found == "ui": + idx = 1 + elif found == "oo" or found == "ng": + idx = 0 + elif found == "ere": + idx = 2 + + # 處理韻母加聲調符號 + guan_im = un_chars[idx] + tiau = tiau_ho_remap_for_BP[int(tiau_ho)] # 將「傳統八聲調」轉換成閩拼使用的調號 + un_chars[idx] = self.bp_un_bu_ga_tiau_ho(guan_im, tiau) + un_str = "".join(un_chars) + piau_im = piau_im.replace(found, un_str) + + return piau_im + + #================================================================ + # 方音符號注音(TPS) + # TPS_mapping_dict = { + # "p": "ㆴ˙", + # "t": "ㆵ˙", + # "k": "ㆻ˙", + # "h": "ㆷ˙", + # } + #================================================================ + def TPS_piau_im(self, siann_bu, un_bu, tiau_ho): + piau_im_huat = "方音符號" + tiau_ho_remap_for_TPS = { + 1: "", + 2: "ˋ", + 3: "˪", + 4: "", + 5: "ˊ", + 7: "˫", + 8: "\u02D9", + } + TPS_piau_im_remap_dict = { + "ㄗㄧ": "ㄐㄧ", + "ㄘㄧ": "ㄑㄧ", + "ㄙㄧ": "ㄒㄧ", + "ㆡㄧ": "ㆢㄧ", } - return un_bu_dict + siann = self.Siann_Bu_Dict[siann_bu][piau_im_huat] + un = self.Un_Bu_Dict[un_bu][piau_im_huat] + tiau = self.TONE_MARKS[piau_im_huat][int(tiau_ho)] + piau_im = f"{siann}{un}{tiau}" + + pattern = r"(ㄗㄧ|ㄘㄧ|ㄙㄧ|ㆡㄧ)" + searchObj = re.search(pattern, piau_im, re.M | re.I) + if searchObj: + key_value = searchObj.group(1) + piau_im = piau_im.replace(key_value, TPS_piau_im_remap_dict[key_value]) + + return piau_im + + #================================================================ + # 雅俗通十五音(SNI:Nga-Siok-Thong) + #================================================================ + def SNI_piau_im(self, siann_bu, un_bu, tiau_ho): + piau_im_huat = "十五音" + tiau_ho_remap_for_sip_ngoo_im = { + 1: "一", + 2: "二", + 3: "三", + 4: "四", + 5: "五", + 7: "七", + 8: "八", + } + siann = self.Siann_Bu_Dict[siann_bu][piau_im_huat] + un = self.Un_Bu_Dict[un_bu][piau_im_huat] + # tiau = tiau_ho_remap_for_sip_ngoo_im[tiau_ho] + tiau = self.TONE_MARKS[piau_im_huat][int(tiau_ho)] + piau_im = f"{un}{tiau}{siann}" + return piau_im diff --git "a/output6/\343\200\220\346\262\263\346\264\233\350\251\261\346\263\250\351\237\263\343\200\221\343\200\212\346\255\270\345\216\273\344\276\206\350\276\255\343\200\213\343\200\220\346\262\263\346\264\233\347\231\275\350\251\261\351\237\263\343\200\221.xlsx" "b/output6/\343\200\220\346\262\263\346\264\233\350\251\261\346\263\250\351\237\263\343\200\221\343\200\212\346\255\270\345\216\273\344\276\206\350\276\255\343\200\213\343\200\220\346\262\263\346\264\233\347\231\275\350\251\261\351\237\263\343\200\221.xlsx" index 221e1f33be680ff3c79215a770fe7fb14fee1fd2..73569566a3f0a9ab4ee303c37d79cc0d79a21795 100644 GIT binary patch delta 5737 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 delta 5755 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 c$BIRQ4E6y_19z oo > (e = o) > (i = u)〈低元音 > 高元音 > 無擦通音 > 擦音 > 塞音〉 -# - 二合字母 iu 及 ui ,調號都標在後一個字母上;因為前一個字母是介音。 -# - m 作韻腹時則標於字母 m 上。 -# - 二合字母 oo 及 ng,標於前一個字母上;比如 ng 標示在字母 n 上。 -# - 三合字母 ere,標於最後的字母 e 上。 -#================================================================ - -# 將「台羅八聲調」轉換成閩拼使用的調號 -tiau_ho_remap_for_BP = { - 1: 1, # 陰平: 44 - 2: 3, # 上聲:53 - 3: 5, # 陰去:21 - 4: 7, # 上聲:53 - 5: 2, # 陽平:24 - 7: 6, # 陰入:3? - 8: 8, # 陽入:4? -} - -def bp_un_bu_ga_tiau_ho(guan_im, tiau): - tiau_hu_dict = { - 1: "\u0304", # 陰平 - 2: "\u0341", # 陽平 - 3: "\u030C", # 上声 - 5: "\u0300", # 陰去 - 6: "\u0302", # 陽去 - 7: "\u0304", # 陰入 - 8: "\u0341", # 陽入 - } - return f"{guan_im}{tiau_hu_dict[tiau]}" - -def BP_piau_im(siann_bu, un_bu, tiau_ho): - piau_im_huat = "閩拼方案" - - if siann_bu == None or siann_bu == "Ø": - siann = "" - else: - siann = Siann_Bu_Dict[siann_bu][piau_im_huat] - - un = Un_Bu_Dict[un_bu][piau_im_huat] - piau_im = f"{siann}{un}" - - # 當聲母為「空白」,韻母為:i 或 u 時,調整聲母 - un_chars = list(un) - if siann == "": - if un_chars[0] == "i": - siann = "y" - elif un_chars[0] == "u": - siann = "w" - - pattern = r"(a|oo|ere|iu|ui|ng|e|o|i|u|m)" - searchObj = re.search(pattern, piau_im, re.M | re.I) - - if searchObj: - found = searchObj.group(1) - un_chars = list(found) - idx = 0 - if found == "iu" or found == "ui": - idx = 1 - elif found == "oo" or found == "ng": - idx = 0 - elif found == "ere": - idx = 2 - - # 處理韻母加聲調符號 - guan_im = un_chars[idx] - tiau = tiau_ho_remap_for_BP[int(tiau_ho)] # 將「傳統八聲調」轉換成閩拼使用的調號 - un_chars[idx] = bp_un_bu_ga_tiau_ho(guan_im, tiau) - un_str = "".join(un_chars) - piau_im = piau_im.replace(found, un_str) - - return piau_im def create_html_file(output_path, content, title='您的標題'): template = f""" @@ -364,21 +69,21 @@ def put_picture(wb, source_sheet_name): html_str += (div_tag % (title, image_url) + "\n") return html_str -def choose_piau_im_method(zu_im_huat, siann_bu, un_bu, tiau_ho): +def choose_piau_im_method(piau_im, zu_im_huat, siann_bu, un_bu, tiau_ho): """選擇並執行對應的注音方法""" if zu_im_huat == "十五音": - return SNI_piau_im(siann_bu, un_bu, tiau_ho) + return piau_im.SNI_piau_im(siann_bu, un_bu, tiau_ho) elif zu_im_huat == "白話字": - return POJ_piau_im(siann_bu, un_bu, tiau_ho) + return piau_im.POJ_piau_im(siann_bu, un_bu, tiau_ho) elif zu_im_huat == "台羅拼音": - return TL_piau_im(siann_bu, un_bu, tiau_ho) + return piau_im.TL_piau_im(siann_bu, un_bu, tiau_ho) elif zu_im_huat == "閩拼方案": - return BP_piau_im(siann_bu, un_bu, tiau_ho) + return piau_im.BP_piau_im(siann_bu, un_bu, tiau_ho) elif zu_im_huat == "方音符號": - return TPS_piau_im(siann_bu, un_bu, tiau_ho) + return piau_im.TPS_piau_im(siann_bu, un_bu, tiau_ho) elif zu_im_huat == "台語音標": - siann = Siann_Bu_Dict[siann_bu]["台語音標"] or "" - un = Un_Bu_Dict[un_bu]["台語音標"] + siann = piau_im.Siann_Bu_Dict[siann_bu]["台語音標"] or "" + un = piau_im.Un_Bu_Dict[un_bu]["台語音標"] return f"{siann}{un}{tiau_ho}" return "" @@ -398,7 +103,7 @@ def concat_ruby_tag(style, han_ji, tlpa_im_piau, han_ji_piau_im): # ========================================================= # 依據指定的【注音方法】,輸出含 Ruby Tags 之 HTML 網頁 # ========================================================= -def build_web_page(wb, sheet, source_chars, total_length, page_type='含頁頭', piau_im_huat='方音符號'): +def build_web_page(wb, sheet, source_chars, total_length, page_type='含頁頭', piau_im_huat='方音符號', piau_im=None): write_buffer = "" # ========================================================= @@ -444,7 +149,7 @@ def build_web_page(wb, sheet, source_chars, total_length, page_type='含頁頭', write_buffer += ("

\n") index += 1 print("\n") - break; + break else: han_ji = sheet.range((row, col)).value # 取得漢字 # 當 han_ji 是標點符號時,不需要注音 @@ -469,6 +174,7 @@ def build_web_page(wb, sheet, source_chars, total_length, page_type='含頁頭', 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], @@ -505,8 +211,7 @@ def build_web_page(wb, sheet, source_chars, total_length, page_type='含頁頭', def tng_sing_bang_iah(wb, sheet_name='漢字注音', cell='V3', page_type='含頁頭'): global source_sheet # 宣告 source_sheet 為全域變數 global source_sheet_name # 宣告 source_sheet_name 為全域變數 - global total_length # 宣告 end_of_source_row 為全域變數 - global Siann_Bu_Dict, Un_Bu_Dict + global total_length # 宣告 total_length 為全域變數 global Web_Page_Style # ------------------------------------------------------------------------- @@ -514,7 +219,7 @@ def tng_sing_bang_iah(wb, sheet_name='漢字注音', cell='V3', page_type='含 # ------------------------------------------------------------------------- han_ji_khoo = get_named_value(wb, '漢字庫', '河洛話') Web_Page_Style = get_named_value(wb, '網頁格式', 'DBL') - Siann_Bu_Dict, Un_Bu_Dict = init_piau_im_dict(han_ji_khoo) + piau_im = PiauIm(han_ji_khoo) # ------------------------------------------------------------------------- # 選擇指定的工作表 @@ -554,7 +259,7 @@ def tng_sing_bang_iah(wb, sheet_name='漢字注音', cell='V3', page_type='含 # ========================================================== print(f"開始製作【漢字注音】網頁!") html_content = build_web_page( - wb, sheet, source_chars, total_length, page_type, han_ji_piau_im_huat + wb, sheet, source_chars, total_length, page_type, han_ji_piau_im_huat, piau_im ) # 輸出到網頁檔案