diff --git a/Tai_Gi_Zu_Im_Bun.xlsx b/Tai_Gi_Zu_Im_Bun.xlsx index 5b11d6b..01c20de 100644 Binary files a/Tai_Gi_Zu_Im_Bun.xlsx and b/Tai_Gi_Zu_Im_Bun.xlsx differ diff --git "a/a710_\346\270\205\347\220\206\345\216\237\345\241\253\345\205\245\346\274\242\345\255\227\345\217\212\346\263\250\351\237\263.py" "b/a710_\346\270\205\347\220\206\345\216\237\345\241\253\345\205\245\346\274\242\345\255\227\345\217\212\346\263\250\351\237\263.py" index 22df141..6c63c62 100644 --- "a/a710_\346\270\205\347\220\206\345\216\237\345\241\253\345\205\245\346\274\242\345\255\227\345\217\212\346\263\250\351\237\263.py" +++ "b/a710_\346\270\205\347\220\206\345\216\237\345\241\253\345\205\245\346\274\242\345\255\227\345\217\212\346\263\250\351\237\263.py" @@ -6,7 +6,6 @@ import settings from p701_Clear_Cells import clear_hanji_in_cells -from p710_thiam_han_ji import fill_hanji_in_cells def get_input_and_output_options(argv): @@ -77,7 +76,6 @@ def get_input_and_output_options(argv): # - 下方:台語注音符號 # ========================================================================= clear_hanji_in_cells(wb) # 清除先前已填入的漢字、注音符號 - wb.sheets['漢字注音'].range("V3").value = "" # ========================================================================= # (3) 依據《文章標題》另存新檔。 diff --git "a/a730_\345\260\207\346\274\242\345\255\227\346\263\250\351\237\263\345\241\253\345\205\245.py" "b/a730_\345\260\207\346\274\242\345\255\227\346\263\250\351\237\263\345\241\253\345\205\245.py" index c8ae25e..52a90e8 100644 --- "a/a730_\345\260\207\346\274\242\345\255\227\346\263\250\351\237\263\345\241\253\345\205\245.py" +++ "b/a730_\345\260\207\346\274\242\345\255\227\346\263\250\351\237\263\345\241\253\345\205\245.py" @@ -5,7 +5,6 @@ import settings from p720_Thiam_Zu_Im import thiam_zu_im -from p730_Tng_Sing_Bang_Iah import tng_sing_bang_iah def get_input_and_output_options(argv): diff --git a/docs/assets/styles/styles.css b/docs/assets/styles/styles.css index d0f0a7f..b69e644 100644 --- a/docs/assets/styles/styles.css +++ b/docs/assets/styles/styles.css @@ -11,7 +11,9 @@ } body { - width: 100%; + /* width: 100%; */ + margin: 10px auto; + width: 60%; color: #333; line-height: 2.0; font-size: 28pt; 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\345\246\202\347\220\206\345\257\246\350\246\213\345\210\206\347\254\254\344\272\224_\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\345\246\202\347\220\206\345\257\246\350\246\213\345\210\206\347\254\254\344\272\224_\346\274\242\345\255\227\346\263\250\351\237\263.html" new file mode 100644 index 0000000..1b5b528 --- /dev/null +++ "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\345\246\202\347\220\206\345\257\246\350\246\213\345\210\206\347\254\254\344\272\224_\346\274\242\345\255\227\346\263\250\351\237\263.html" @@ -0,0 +1,125 @@ + +<!DOCTYPE html> +<html lang="zh-TW"> +<head> + <title>《金剛般若波羅蜜經。如理實見分第五》【漢字注音】</title> + <meta charset="UTF-8"> + <link rel="stylesheet" href="assets/styles/styles.css"> +</head> +<body> + 《金剛般若波羅蜜經。如理實見分第五》【漢字注音】 +<div class='separator' style='clear: both'> + <a href='圖片' style='display: block; padding: 1em 0; text-align: center'> + <img alt='金剛般若波羅蜜經。如理實見分第五' border='0' width='400' data-original-height='630' data-original-width='1200' + src='https://shoplineimg.com/5db585d59db3cb0012a18bce/5f2a9d3f30cc6200455c1c25/1296x.webp?source_format=jpg' /> + </a> +</div> + +<div class='Siang_Pai'><p> +<span>《</span> +<ruby><rb>金</rb><rt>kim¹</rt><rtc>ㄍㄧㆬˉ</rtc></ruby> +<ruby><rb>剛</rb><rt>kong¹</rt><rtc>ㄍㆲˉ</rtc></ruby> +<ruby><rb>般</rb><rt>pⁿua¹</rt><rtc>ㄅㄨㆩˉ</rtc></ruby> +<ruby><rb>若</rb><rt>na²</rt><rtc>ㄋㄚˋ</rtc></ruby> +<ruby><rb>波</rb><rt>pho¹</rt><rtc>ㄆㄜˉ</rtc></ruby> +<ruby><rb>羅</rb><rt>lo⁵</rt><rtc>ㄌㄜˊ</rtc></ruby> +<ruby><rb>蜜</rb><rt>bit⁸</rt><rtc>ㆠㄧㆵ˙</rtc></ruby> +<ruby><rb>經</rb><rt>king¹</rt><rtc>ㄍㄧㄥˉ</rtc></ruby> +<span>》</span> +</p><p> +<ruby><rb>如</rb><rt>ju⁵</rt><rtc>ㆡㄨˊ</rtc></ruby> +<ruby><rb>理</rb><rt>li²</rt><rtc>ㄌㄧˋ</rtc></ruby> +<ruby><rb>實</rb><rt>sit⁸</rt><rtc>ㄒㄧㆵ˙</rtc></ruby> +<ruby><rb>見</rb><rt>kⁿi³</rt><rtc>ㄍㆪ˪</rtc></ruby> +<ruby><rb>分</rb><rt>hun¹</rt><rtc>ㄏㄨㄣˉ</rtc></ruby> +<ruby><rb>第</rb><rt>te⁷</rt><rtc>ㄉㆤ˫</rtc></ruby> +<ruby><rb>五</rb><rt>goo⁷</rt><rtc>ㆣㆦ˫</rtc></ruby> +</p><p> +<span>「</span> +<ruby><rb>須</rb><rt>su¹</rt><rtc>ㄙㄨˉ</rtc></ruby> +<ruby><rb>菩</rb><rt>phoo⁵</rt><rtc>ㄆㆦˊ</rtc></ruby> +<ruby><rb>提</rb><rt>theh⁸</rt><rtc>ㄊㆤㆷ˙</rtc></ruby> +<span>!</span> +<ruby><rb>於</rb><rt>u⁵</rt><rtc>ㄨˊ</rtc></ruby> +<ruby><rb>意</rb><rt>i³</rt><rtc>ㄧ˪</rtc></ruby> +<ruby><rb>云</rb><rt>un⁵</rt><rtc>ㄨㄣˊ</rtc></ruby> +<ruby><rb>何</rb><rt>ho⁵</rt><rtc>ㄏㄜˊ</rtc></ruby> +<span>?</span> +<ruby><rb>可</rb><rt>kho²</rt><rtc>ㄎㄜˋ</rtc></ruby> +<ruby><rb>以</rb><rt>i²</rt><rtc>ㄧˋ</rtc></ruby> +<ruby><rb>身</rb><rt>sin¹</rt><rtc>ㄒㄧㄣˉ</rtc></ruby> +<ruby><rb>相</rb><rt>siong¹</rt><rtc>ㄒㄧㆲˉ</rtc></ruby> +<ruby><rb>見</rb><rt>kⁿi³</rt><rtc>ㄍㆪ˪</rtc></ruby> +<ruby><rb>如</rb><rt>ju⁵</rt><rtc>ㆡㄨˊ</rtc></ruby> +<ruby><rb>來</rb><rt>lai⁰</rt><rtc>ㄌㄞ˙</rtc></ruby> +<ruby><rb>不</rb><rt>put⁴</rt><rtc>ㄅㄨㆵ</rtc></ruby> +<span>?</span> +<span>」</span> +<span>「</span> +<ruby><rb>不</rb><rt>put⁴</rt><rtc>ㄅㄨㆵ</rtc></ruby> +<ruby><rb>也</rb><rt>ia⁷</rt><rtc>ㄧㄚ˫</rtc></ruby> +<span>,</span> +<ruby><rb>世</rb><rt>se³</rt><rtc>ㄙㆤ˪</rtc></ruby> +<ruby><rb>尊</rb><rt>zun¹</rt><rtc>ㄗㄨㄣˉ</rtc></ruby> +<span>!</span> +<ruby><rb>不</rb><rt>put⁴</rt><rtc>ㄅㄨㆵ</rtc></ruby> +<ruby><rb>可</rb><rt>kho²</rt><rtc>ㄎㄜˋ</rtc></ruby> +<ruby><rb>以</rb><rt>i²</rt><rtc>ㄧˋ</rtc></ruby> +<ruby><rb>身</rb><rt>sin¹</rt><rtc>ㄒㄧㄣˉ</rtc></ruby> +<ruby><rb>相</rb><rt>siong¹</rt><rtc>ㄒㄧㆲˉ</rtc></ruby> +<ruby><rb>得</rb><rt>tit⁴</rt><rtc>ㄉㄧㆵ</rtc></ruby> +<ruby><rb>見</rb><rt>kⁿi³</rt><rtc>ㄍㆪ˪</rtc></ruby> +<ruby><rb>如</rb><rt>ju⁵</rt><rtc>ㆡㄨˊ</rtc></ruby> +<ruby><rb>來</rb><rt>lai⁰</rt><rtc>ㄌㄞ˙</rtc></ruby> +<span>。</span> +<ruby><rb>何</rb><rt>ho⁵</rt><rtc>ㄏㄜˊ</rtc></ruby> +<ruby><rb>以</rb><rt>i²</rt><rtc>ㄧˋ</rtc></ruby> +<ruby><rb>故</rb><rt>koo³</rt><rtc>ㄍㆦ˪</rtc></ruby> +<span>?</span> +<ruby><rb>如</rb><rt>ju⁵</rt><rtc>ㆡㄨˊ</rtc></ruby> +<ruby><rb>來</rb><rt>la⁰</rt><rtc>ㄌㄚ˙</rtc></ruby> +<ruby><rb>所</rb><rt>soo²</rt><rtc>ㄙㆦˋ</rtc></ruby> +<ruby><rb>說</rb><rt>suat⁴</rt><rtc>ㄙㄨㄚㆵ</rtc></ruby> +<ruby><rb>身</rb><rt>sin¹</rt><rtc>ㄒㄧㄣˉ</rtc></ruby> +<ruby><rb>相</rb><rt>siong¹</rt><rtc>ㄒㄧㆲˉ</rtc></ruby> +<span>,</span> +<ruby><rb>即</rb><rt>ziah⁴</rt><rtc>ㄐㄧㄚㆷ</rtc></ruby> +<ruby><rb>非</rb><rt>hui¹</rt><rtc>ㄏㄨㄧˉ</rtc></ruby> +<ruby><rb>身</rb><rt>sin¹</rt><rtc>ㄒㄧㄣˉ</rtc></ruby> +<ruby><rb>相</rb><rt>siong¹</rt><rtc>ㄒㄧㆲˉ</rtc></ruby> +<span>。</span> +<span>」</span> +<ruby><rb>佛</rb><rt>put⁸</rt><rtc>ㄅㄨㆵ˙</rtc></ruby> +<ruby><rb>告</rb><rt>ko³</rt><rtc>ㄍㄜ˪</rtc></ruby> +<ruby><rb>須</rb><rt>su¹</rt><rtc>ㄙㄨˉ</rtc></ruby> +<ruby><rb>菩</rb><rt>phoo⁵</rt><rtc>ㄆㆦˊ</rtc></ruby> +<ruby><rb>提</rb><rt>theh⁸</rt><rtc>ㄊㆤㆷ˙</rtc></ruby> +<span>:</span> +<span>「</span> +<ruby><rb>凡</rb><rt>huan⁵</rt><rtc>ㄏㄨㄢˊ</rtc></ruby> +<ruby><rb>所</rb><rt>soo²</rt><rtc>ㄙㆦˋ</rtc></ruby> +<ruby><rb>有</rb><rt>u⁷</rt><rtc>ㄨ˫</rtc></ruby> +<ruby><rb>相</rb><rt>siong¹</rt><rtc>ㄒㄧㆲˉ</rtc></ruby> +<span>,</span> +<ruby><rb>皆</rb><rt>kai¹</rt><rtc>ㄍㄞˉ</rtc></ruby> +<ruby><rb>是</rb><rt>si⁷</rt><rtc>ㄒㄧ˫</rtc></ruby> +<ruby><rb>虛</rb><rt>hi¹</rt><rtc>ㄏㄧˉ</rtc></ruby> +<ruby><rb>妄</rb><rt>bong⁷</rt><rtc>ㆠㆲ˫</rtc></ruby> +<span>。</span> +<ruby><rb>若</rb><rt>na²</rt><rtc>ㄋㄚˋ</rtc></ruby> +<ruby><rb>見</rb><rt>kⁿi³</rt><rtc>ㄍㆪ˪</rtc></ruby> +<ruby><rb>諸</rb><rt>zu¹</rt><rtc>ㄗㄨˉ</rtc></ruby> +<ruby><rb>相</rb><rt>siong¹</rt><rtc>ㄒㄧㆲˉ</rtc></ruby> +<ruby><rb>非</rb><rt>hui¹</rt><rtc>ㄏㄨㄧˉ</rtc></ruby> +<ruby><rb>相</rb><rt>siong¹</rt><rtc>ㄒㄧㆲˉ</rtc></ruby> +<span>,</span> +<ruby><rb>即</rb><rt>ziah⁴</rt><rtc>ㄐㄧㄚㆷ</rtc></ruby> +<ruby><rb>見</rb><rt>kⁿi³</rt><rtc>ㄍㆪ˪</rtc></ruby> +<ruby><rb>如</rb><rt>ju⁵</rt><rtc>ㆡㄨˊ</rtc></ruby> +<ruby><rb>來</rb><rt>lai⁰</rt><rtc>ㄌㄞ˙</rtc></ruby> +<span>。</span> +<span>」</span> +</p></div> +</body> +</html> + \ No newline at end of file diff --git "a/output2/\343\200\212\351\207\221\351\213\274\347\266\223\343\200\213004.xlsx" "b/output2/\343\200\212\351\207\221\351\213\274\347\266\223\343\200\213004.xlsx" new file mode 100644 index 0000000..38ce932 Binary files /dev/null and "b/output2/\343\200\212\351\207\221\351\213\274\347\266\223\343\200\213004.xlsx" differ diff --git "a/output2/\343\200\212\351\207\221\351\213\274\347\266\223\343\200\213005.xlsx" "b/output2/\343\200\212\351\207\221\351\213\274\347\266\223\343\200\213005.xlsx" new file mode 100644 index 0000000..baba5a9 Binary files /dev/null and "b/output2/\343\200\212\351\207\221\351\213\274\347\266\223\343\200\213005.xlsx" differ diff --git a/p701_Clear_Cells.py b/p701_Clear_Cells.py index 3d8e4b4..97bae05 100644 --- a/p701_Clear_Cells.py +++ b/p701_Clear_Cells.py @@ -1,51 +1,6 @@ -# 全域常數 -TOTAL_ROWS = 12 - # 填漢字等標音:將整段的文字拆解,個別填入儲存格,以便後續人工手動填入台語音標、注音符號。 -import getopt -import sys - import xlwings as xw -import settings - - -def get_input_and_output_options(argv): - arg_input = "" - arg_output = "" - arg_user = "" - arg_help = "{0} -i <input> -u <user> -o <output>".format(argv[0]) - - try: - opts, args = getopt.getopt( # pyright: ignore - argv[1:], "hi:u:o:", ["help", "input=", "user=", "output="] - ) - except Exception as e: - print(e) - print(arg_help) - sys.exit(2) - - for opt, arg in opts: - if opt in ("-h", "--help"): - print(arg_help) # print the help message - sys.exit(2) - elif opt in ("-i", "--input"): - arg_input = arg - elif opt in ("-u", "--user"): - arg_user = arg - elif opt in ("-o", "--output"): - arg_output = arg - - print("input:", arg_input) - print("user:", arg_user) - print("output:", arg_output) - - return { - "input": arg_input, - "user": arg_user, - "output": arg_output, - } - def clear_hanji_in_cells(wb, sheet_name='漢字注音', cell='V3'): # 選擇指定的工作表 @@ -54,56 +9,40 @@ def clear_hanji_in_cells(wb, sheet_name='漢字注音', cell='V3'): # 取得 V3 儲存格的字串 v3_value = sheet.range(cell).value - # 確認 V3 不為空 - if v3_value: - # 計算字串的總長度 - total_length = len(v3_value) - - # 每列最多處理 15 個字元,計算總共需要多少列 - chars_per_row = 15 - - # 迴圈清空所有漢字的上下方儲存格 (羅馬拼音和台語注音符號) - row = 5 - for i in range(TOTAL_ROWS): - for col in range(4, 19): # 【D欄=4】到【R欄=18】 - # 清空漢字儲存格 (Row) - sheet.range((row, col)).value = None - # 清空上方的台語拼音儲存格 (Row-1) - sheet.range((row - 1, col)).value = None - # 清空下方的台語注音儲存格 (Row+1) - sheet.range((row + 1, col)).value = None - # 清空填入注音的儲存格 (Row-2) - sheet.range((row - 2, col)).value = None - - # 每處理 15 個字元後,換到下一行 - row += 4 - - # sheet.range(cell).value = None - - - -if __name__ == "__main__": - # ========================================================================= - # (1) 取得需要注音的「檔案名稱」及其「目錄路徑」。 - # ========================================================================= - # 取得 Input 檔案名稱 - file_path = settings.get_tai_gi_zu_im_bun_path() - if not file_path: - print("未設定 .env 檔案") - # sys.exit(2) - opts = get_input_and_output_options(sys.argv) - if opts["input"] != "": - CONVERT_FILE_NAME = opts["input"] - else: - CONVERT_FILE_NAME = "Tai_Gi_Zu_Im_Bun.xlsx" - else: - CONVERT_FILE_NAME = file_path - print(f"CONVERT_FILE_NAME = {CONVERT_FILE_NAME}") - - # 打開 Excel 檔案 - wb = xw.Book(CONVERT_FILE_NAME) + # 計算字串的總長度 + total_length = len(v3_value) + print(f" {total_length} 個字元") + + # 每頁最多處理 20 列 + TOTAL_ROWS = int(wb.names['每頁總列數'].refers_to_range.value) # 自名稱為【每頁總列數】之儲存格,取得【每頁最多處理幾列】之值 + # 每列最多處理 15 字元 + CHARS_PER_ROW = int(wb.names['每列總字數'].refers_to_range.value) # 自名稱為【每列總字數】之儲存格,取得【每列最多處理幾個字元】之值 + # 設定起始及結束的欄位 (【D欄=4】到【R欄=18】) + start = 4 + end = start + CHARS_PER_ROW + + # 迴圈清空所有漢字的上下方儲存格 (羅馬拼音和台語注音符號) + row = 5 + for i in range(TOTAL_ROWS): + for col in range(start, end): # 【D欄=4】到【R欄=18】 + # 清空漢字儲存格 (Row) + sheet.range((row, col)).value = None + # 清空上方的台語拼音儲存格 (Row-1) + sheet.range((row - 1, col)).value = None + # 清空下方的台語注音儲存格 (Row+1) + sheet.range((row + 1, col)).value = None + # 清空填入注音的儲存格 (Row-2) + sheet.range((row - 2, col)).value = None + + # 顯示清空的儲存格 + col_name = xw.utils.col_name(col) + print(f"清空第 {row} 列,第 {col_name} 欄") + + # 每處理 15 個字元後,換到下一行 + row += 4 + print("\n") # ========================================================================= # (2) 清除原先已填入的漢字 # ========================================================================= - clear_hanji_in_cells(wb, '漢字注音', 'V3') + sheet.range("V3").value = "" diff --git a/p710_thiam_han_ji.py b/p710_thiam_han_ji.py index fadb08a..dae86c1 100644 --- a/p710_thiam_han_ji.py +++ b/p710_thiam_han_ji.py @@ -1,3 +1,6 @@ +import xlwings as xw + + def fill_hanji_in_cells(wb, sheet_name='漢字注音', cell='V3'): # 選擇指定的工作表 sheet = wb.sheets[sheet_name] @@ -9,9 +12,15 @@ def fill_hanji_in_cells(wb, sheet_name='漢字注音', cell='V3'): if v3_value: # 計算字串的總長度 total_length = len(v3_value) + print(f" {total_length} 個字元") - # 每列最多處理 15 個字元,計算總共需要多少列 - chars_per_row = 15 + # 每頁最多處理 20 列 + TOTAL_ROWS = int(wb.names['每頁總列數'].refers_to_range.value) # 自名稱為【每頁總列數】之儲存格,取得【每頁最多處理幾列】之值 + # 每列最多處理 15 字元 + CHARS_PER_ROW = int(wb.names['每列總字數'].refers_to_range.value) # 自名稱為【每列總字數】之儲存格,取得【每列最多處理幾個字元】之值 + # 設定起始及結束的欄位 (【D欄=4】到【R欄=18】) + start = 4 + end = start + CHARS_PER_ROW # 逐字處理字串,並填入對應的儲存格 row = 5 @@ -19,7 +28,7 @@ def fill_hanji_in_cells(wb, sheet_name='漢字注音', cell='V3'): # 逐字處理字串 while index < total_length: # 使用 while 而非 for,確保處理完整個字串 - for col in range(4, 19): # 【D欄=4】到【R欄=18】 + for col in range(start, end): # 【D欄=4】到【R欄=18】 # 確認是否還有字元可以處理 if index < total_length: # 取得當前字元 @@ -28,6 +37,9 @@ def fill_hanji_in_cells(wb, sheet_name='漢字注音', cell='V3'): if char != "\n": # 將字元填入對應的儲存格 sheet.range((row, col)).value = char + + col_name = xw.utils.col_name(col) + print(f"【{row} 列, {col_name} 欄】:{char}") else: # 若遇到換行字元,直接跳過 index += 1 @@ -39,6 +51,7 @@ def fill_hanji_in_cells(wb, sheet_name='漢字注音', cell='V3'): break # 若字串已處理完畢,退出迴圈 # 每處理 15 個字元後,換到下一行 + print("\n") row += 4 # 保存 Excel 檔案 diff --git a/p720_Thiam_Zu_Im.py b/p720_Thiam_Zu_Im.py index 6889e62..adfb20a 100644 --- a/p720_Thiam_Zu_Im.py +++ b/p720_Thiam_Zu_Im.py @@ -12,64 +12,75 @@ def thiam_zu_im(wb, sheet_name='漢字注音', cell='V3'): # 取得 V3 儲存格的字串 v3_value = sheet.range(cell).value - # 確認 V3 不為空 - if v3_value: - # 計算字串的總長度 - total_length = len(v3_value) - - # 每列最多處理 15 個字元,計算總共需要多少列 - chars_per_row = 15 + # 每頁最多處理 20 列 + TOTAL_ROWS = int(wb.names['每頁總列數'].refers_to_range.value) # 自名稱為【每頁總列數】之儲存格,取得【每頁最多處理幾列】之值 + # 每列最多處理 15 字元 + CHARS_PER_ROW = int(wb.names['每列總字數'].refers_to_range.value) # 自名稱為【每列總字數】之儲存格,取得【每列最多處理幾個字元】之值 + # 設定起始及結束的欄位 (【D欄=4】到【R欄=18】) + start = 4 + end = start + CHARS_PER_ROW - # 清空 Row: 5, 9, 13, ... 漢字所在儲存格,上方的台語音標儲存格,及下方的台語注音符號儲存格 - row = 5 - index = 0 # 漢字處理指標 - # 逐字處理字串 - while index < total_length: # 使用 while 而非 for,確保處理完整個字串 - for col in range(4, 19): # 【D欄=4】到【R欄=18】 - # 確認是否還有字元可以處理 - if index < total_length: - # 取得當前字元 - char = v3_value[index] + # 計算字串的總長度 + total_length = len(v3_value) - if char != "\n": - # 清空上方的台語音標儲存格 - sheet.range((row - 1, col)).value = None - - # 清空下方的台語注音符號儲存格 - sheet.range((row + 1, col)).value = None - - else: - # 若遇到換行字元,退出迴圈 - index += 1 - break; - - # 更新索引,處理下一個字元 - index += 1 - else: - break # 若字串已處理完畢,退出迴圈 - # 每處理 15 個字元後,換到下一行 - row += 4 + # 確認 V3 不為空 + if total_length and total_length < (CHARS_PER_ROW * TOTAL_ROWS): + # # 清空 Row: 5, 9, 13, ... 漢字所在儲存格,上方的台語音標儲存格,及下方的台語注音符號儲存格 + # row = 5 + # index = 0 # 漢字處理指標 + + # # 逐字處理字串 + # while index < total_length: # 使用 while 而非 for,確保處理完整個字串 + # for col in range(start, end): # 【D欄=4】到【R欄=18】 + # # 確認是否還有字元可以處理 + # if index < total_length: + # # 取得當前字元 + # char = v3_value[index] + + # if char != "\n": + # # 清空上方的台語音標儲存格 + # sheet.range((row - 1, col)).value = None + + # # 清空下方的台語注音符號儲存格 + # sheet.range((row + 1, col)).value = None + + # else: + # # 若遇到換行字元,退出迴圈 + # index += 1 + # break; + + # # 更新索引,處理下一個字元 + # index += 1 + # else: + # break # 若字串已處理完畢,退出迴圈 + # # 每處理 15 個字元後,換到下一行 + # row += 4 # 逐行處理資料,從 Row 3 開始,每列處理 15 個字元 row = 3 index = 0 # 漢字處理指標 while index < total_length: # 使用 while 而非 for,確保處理完整個字串 - for col in range(4, 19): # 【D欄=4】到【R欄=18】 + for col in range(start, end): # 【D欄=4】到【R欄=18】 + col_name = xw.utils.col_name(col) char = None - lo_ma_ji = None - zu_im_hu_ho = None + han_ji = "" + lo_ma_im_piau = "" + zu_im_hu_ho = "" # 確認是否還有字元可以處理 if index < total_length: char = v3_value[index] # 取得目前欲處理的【漢字】 if char != "\n": # 確認待處理的【漢字】不是【換行字元: \n】 cell_value = sheet.range((row, col)).value # 取得 D4, E4, ..., R4 的內容 if cell_value: # 確認儲存格有填入【拚音字母/注音符號】 + # 取得正在注音的漢字 + han_ji = sheet.range((row + 2, col)).value + # 分割字串來提取羅馬拼音和台語注音 - lo_ma_ji = cell_value.split('〔')[1].split('〕')[0] # 取得〔羅馬拼音〕 + lo_ma_im_piau = cell_value.split('〔')[1].split('〕')[0] # 取得〔羅馬拼音〕 zu_im_hu_ho = cell_value.split('【')[1].split('】')[0] # 取得【台語注音】 # 將羅馬拼音填入當前 row + 1 的儲存格 - sheet.range((row + 1, col)).value = lo_ma_ji + sheet.range((row + 1, col)).value = lo_ma_im_piau # 將台語注音填入當前 row + 3 的儲存格 sheet.range((row + 3, col)).value = zu_im_hu_ho @@ -79,10 +90,10 @@ def thiam_zu_im(wb, sheet_name='漢字注音', cell='V3'): break; # 顯示當前處理的【漢字】、【羅馬拼音】和【台語注音】 - if lo_ma_ji and zu_im_hu_ho: - print(f"{char}: [{lo_ma_ji}] 【{zu_im_hu_ho}】") + 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"{char}") + print(f"({row}, {col_name}) = {char}") # 更新索引,處理下一個字元 index += 1 @@ -90,6 +101,7 @@ def thiam_zu_im(wb, sheet_name='漢字注音', cell='V3'): break # 若字串已處理完畢,退出迴圈 # 每處理 15 個字元後,換到下一行 row += 4 + print("\n") print("已完成【台語音標】和【台語注音符號】標註工作。") diff --git a/p730_Tng_Sing_Bang_Iah.py b/p730_Tng_Sing_Bang_Iah.py index d99b731..f0c54fe 100644 --- a/p730_Tng_Sing_Bang_Iah.py +++ b/p730_Tng_Sing_Bang_Iah.py @@ -1,6 +1,5 @@ # Tng_Sing_Bang_Iah.py (轉成網頁) # 用途:將【漢字注音】工作表中的漢字、台語音標及台語注音符號,轉成 HTML 網頁格式。 -import math import os import xlwings as xw @@ -83,10 +82,15 @@ def build_web_page(wb, sheet, source_chars, total_length): html_str = f"<div class='{div_class}'><p>" write_buffer += (html_str + "\n") - # 每列最多處理 15 個字元 - chars_per_row = 15 + # 每頁最多處理 20 列 + TOTAL_ROWS = int(wb.names['每頁總列數'].refers_to_range.value) # 自名稱為【每頁總列數】之儲存格,取得【每頁最多處理幾列】之值 + # 每列最多處理 15 字元 + CHARS_PER_ROW = int(wb.names['每列總字數'].refers_to_range.value) # 自名稱為【每列總字數】之儲存格,取得【每列最多處理幾個字元】之值 + # 設定起始及結束的欄位 (【D欄=4】到【R欄=18】) + start = 4 + end = start + CHARS_PER_ROW - if total_length: + if total_length and total_length < (CHARS_PER_ROW * TOTAL_ROWS): row = 5 index = 0 # 用來追蹤處理到哪個字元 @@ -95,7 +99,8 @@ def build_web_page(wb, sheet, source_chars, total_length): # 逐字處理字串 while index < total_length: - for col in range(4, 19): # 【D欄=4】到【R欄=18】 + for col in range(start, end): # 【D欄=4】到【R欄=18】 + col_name = xw.utils.col_name(col) if index < total_length: ruby_tag = "" src_char = source_chars[index] # 取得目前欲處理的【漢字】 @@ -103,15 +108,15 @@ def build_web_page(wb, sheet, source_chars, total_length): # 若遇到換行字元,退出迴圈 write_buffer += ("</p><p>\n") index += 1 + print("\n") break; else: han_ji = sheet.range((row, col)).value # 取得漢字 - # 在 Console 顯示目前處理的漢字,以便使用者可知目前進度 - print(f"處理中:{han_ji}") - # 當 han_ji 是標點符號時,不需要注音 if is_punctuation(han_ji): ruby_tag = f"<span>{han_ji}</span>\n" + # 在 Console 顯示目前處理的漢字,以便使用者可知目前進度 + print(f"({row}, {col_name}) = {han_ji}") else: lo_ma_im_piau = sheet.range((row - 1, col)).value # 取得漢字的台語音標 zu_im_hu_ho = sheet.range((row + 1, col)).value # 取得漢字的台語注音符號 @@ -120,6 +125,8 @@ def build_web_page(wb, sheet, source_chars, total_length): lo_ma_im_piau = lo_ma_im_piau if lo_ma_im_piau is not None else "" zu_im_hu_ho = zu_im_hu_ho if zu_im_hu_ho is not None else "" + # 在 Console 顯示目前處理的漢字,以便使用者可知目前進度 + print(f"({row}, {col_name}) = {han_ji} [{lo_ma_im_piau}] 【{zu_im_hu_ho}】") # ========================================================= # 將已注音之漢字加入【漢字注音表】 # ========================================================= @@ -139,7 +146,7 @@ def build_web_page(wb, sheet, source_chars, total_length): break # 若已處理完畢,退出欄位迴圈 # 每處理一行後,換到下一行 - # write_buffer += "<br>\n" + print("\n") row += 4 # =========================================================