Skip to Content
程式貓正在招募團隊夥伴 🎉
自動配置腳本

自動配置腳本

執行並載入檔案即可獲得配置文件

import pdfplumber import json import os def clean_course_name(name: str) -> str: if not name: return "" # 如果有換行符號,取第一行(通常是中文課名) if "\n" in name: return name.split("\n")[0].strip() return name.strip() def extract_course_info(pdf_path): data = [] with pdfplumber.open(pdf_path) as pdf: for page in pdf.pages: tables = page.extract_tables() for table in tables: for row in table[1:]: if len(row) >= 8: course_name = row[3].strip() if row[3] else "" course_time = row[7].strip() if row[7] else "" # 清理課程名稱 course_name = clean_course_name(course_name) data.append({ "course_name": course_name, "course_time": course_time }) return data if __name__ == '__main__': pdf_path = r'C:\Users\User\Desktop\resource\input\example.pdf' result_dir = r'C:\Users\User\Desktop\resource\result' os.makedirs(result_dir, exist_ok=True) courses = extract_course_info(pdf_path) output_path = os.path.join(result_dir, "courses.json") with open(output_path, "w", encoding="utf-8") as f: json.dump(courses, f, ensure_ascii=False, indent=2) print(f"課程 JSON 已輸出到: {output_path}")

範例資料

[ { "course_name": "計算機概論", "course_time": "102/103/104" }, { "course_name": "國文(上)(國文", "course_time": "106/107" }, { "course_name": "微積分", "course_time": "108/109/204" }, { "course_name": "英文(大一英文)", "course_time": "201/202" }, { "course_name": "計算機概論實習", "course_time": "206/207" }, { "course_name": "程式設計實習", "course_time": "306/307/308" }, { "course_name": "離散數學", "course_time": "402/403/404" }, { "course_name": "產學巡禮導論", "course_time": "406" }, { "course_name": "人工智慧概論", "course_time": "407/408" }, { "course_name": "程式設計", "course_time": "502/503/504" }, { "course_name": "排球(初)", "course_time": "506/507" } ]
Last updated on