Skip to content

Commit

Permalink
改善作業的處理細節。
Browse files Browse the repository at this point in the history
  • Loading branch information
AlanJui committed Oct 13, 2024
1 parent a817e2f commit cb01070
Show file tree
Hide file tree
Showing 6 changed files with 81 additions and 4 deletions.
11 changes: 9 additions & 2 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,17 @@
"console": "integratedTerminal",
},
{
"name": "a703_批次式查找及填入漢字標音",
"name": "a703_製作標音網頁",
"type": "debugpy",
"request": "launch",
"program": "a703_批次式查找及填入漢字標音.py",
"program": "a703_製作標音網頁.py",
"console": "integratedTerminal",
},
{
"name": "a704_批次式查找及填入漢字標音",
"type": "debugpy",
"request": "launch",
"program": "a704_批次式查找及填入漢字標音.py",
"console": "integratedTerminal",
},
{
Expand Down
62 changes: 62 additions & 0 deletions a703_製作標音網頁.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
import os
import sys

import xlwings as xw

from p730_Tng_Sing_Bang_Iah import tng_sing_bang_iah

# 指定虛擬環境的 Python 路徑
venv_python = os.path.join(".venv", "Scripts", "python.exe") if sys.platform == "win32" else os.path.join(".venv", "bin", "python")

# (0) 取得專案根目錄。
# 使用已打開且處於作用中的 Excel 工作簿
try:
wb = xw.apps.active.books.active
except Exception as e:
print(f"發生錯誤: {e}")
print("無法找到作用中的 Excel 工作簿")
sys.exit(2)

# 獲取活頁簿的完整檔案路徑
file_path = wb.fullname
print(f"完整檔案路徑: {file_path}")

# 獲取活頁簿的檔案名稱(不包括路徑)
file_name = wb.name
print(f"檔案名稱: {file_name}")

# 顯示「已輸入之拼音字母及注音符號」
named_range = wb.names['顯示注音輸入'] # 選擇名為 "顯示注音輸入" 的命名範圍# 選擇名為 "顯示注音輸入" 的命名範圍
named_range.refers_to_range.value = True

# (1) A720: 將 V3 儲存格內的漢字,逐個填入標音用方格。
sheet = wb.sheets['漢字注音'] # 選擇工作表
sheet.activate() # 將「漢字注音」工作表設為作用中工作表
sheet.range('A1').select() # 將 A1 儲存格設為作用儲存格

# (2) A740: 將【漢字注音】工作表的內容,轉成 HTML 網頁檔案。
tng_sing_bang_iah(wb, '漢字注音', 'V3')

# (3) A750: 將 Tai_Gi_Zu_Im_Bun.xlsx 檔案,依 env 工作表的設定,另存新檔到指定目錄。
try:
file_name = str(wb.names['TITLE'].refers_to_range.value).strip()
except KeyError:
# print("未找到命名範圍 'TITLE',使用預設名稱")
# file_name = "default_file_name.xlsx" # 提供一個預設檔案名稱
setting_sheet = wb.sheets["env"]
file_name = str(
setting_sheet.range("C4").value
).strip()

# 設定檔案輸出路徑,存於專案根目錄下的 output2 資料夾
output_path = wb.names['OUTPUT_PATH'].refers_to_range.value
new_file_path = os.path.join(
".\\{0}".format(output_path),
f"【河洛話注音】{file_name}.xlsx")

# 儲存新建立的工作簿
wb.save(new_file_path)

# 保存 Excel 檔案
wb.close()

12 changes: 10 additions & 2 deletions mod_台羅音標漢字庫.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@ def close_db_connection(conn):

# ==========================================================
# 用 `漢字` 查詢《台語音標》的讀音資訊
# 在【台羅音標漢字庫】資料表結構中,以【常用度】欄位之值,區分【文讀音】與【白話音】。
# 文讀音:常用度 > 0.60;最常用的讀音其值為 0.80,次常用的讀音其值為 0.70;其餘則使用數值 0.69 ~ 0.61。
# 白話音:常用度 > 0.40;最常用的讀音其值為 0.60,次常用的讀音其值為 0.50;其餘則使用數值 0.59 ~ 0.41。
# 其 它:常用度 > 0.00;使用數值 0.40 ~ 0.01;使用時機為:(1)方言地方腔;(2) 罕見發音;(3) 尚未查證屬文讀音或白話音 。
# ==========================================================
def han_ji_ca_piau_im(cursor, han_ji, reading_type="文讀音"):
"""
Expand Down Expand Up @@ -115,8 +119,12 @@ def han_ji_ca_piau_im(cursor, han_ji, reading_type="文讀音"):
# ==========================================================
def split_zu_im(zu_im):
# 聲母相容性轉換處理(將 tsh 轉換為 c;將 ts 轉換為 z)
zu_im = zu_im.replace("tsh", "c") # 將 tsh 轉換為 c
zu_im = zu_im.replace("ts", "z") # 將 ts 轉換為 z
# zu_im = zu_im.replace("tsh", "c") # 將 tsh 轉換為 c
# zu_im = zu_im.replace("ts", "z") # 將 ts 轉換為 z
if zu_im.startswith("tsh") or zu_im.startswith("ch"):
zu_im = zu_im.replace("tsh", "c", 1).replace("ch", "c", 1) # 將 tsh, ch 轉換為 c
elif zu_im.startswith("ts") or zu_im.startswith("c"):
zu_im = zu_im.replace("ts", "z", 1).replace("c", "z", 1) # 將 ts, c 轉換為 z

# 定義聲母的正規表示式,包括常見的聲母,但不包括 m 和 ng
siann_bu_pattern = re.compile(r"(b|c|z|g|h|j|kh|k|l|m(?!\d)|ng(?!\d)|n|ph|p|s|th|t|Ø)")
Expand Down
Binary file modified output2/【河洛話注音】桃花源記【文讀音】.xlsx
Binary file not shown.
Binary file modified output2/【河洛話注音】桃花源記【白話音】.xlsx
Binary file not shown.

0 comments on commit cb01070

Please sign in to comment.