資料工程中階・日誌與設定檔解析
這一頁是題幹試閱;登入/註冊後每題可以在瀏覽器裡執行、對答案,第一次交對 +10 XP。
- 01
綜合的練習
困難以下是排程伺服器的日誌,每行格式為「日期 時間 等級 訊息」(資料 hard code 於程式中):
logs = [
'2026-10-01 08:15:22 INFO crawler started',
'2026-10-01 08:47:03 ERROR db timeout',
'2026-10-01 09:02:11 WARN retry 1',
'2026-10-01 09:05:40 ERROR db timeout',
'2026-10-01 09:30:00 INFO crawler finished',
'2026-10-01 10:12:09 ERROR disk full',
]
請印出兩份報表:
- 各等級筆數,依 ERROR、WARN、INFO 的順序印出
- ERROR 依「小時」分組的筆數,依小時由小到大印出(小時取兩位數字,如 08)
輸出格式:
等級 筆數(三行,依 ERROR、WARN、INFO)
小時 時 ERROR: 筆數(每個有 ERROR 的小時一行)
作答登入後可作答 - 02
Worker log 統計
中等變數
log_text是一段 Celery worker 的 log。請用re解析,印出:succeeded:<成功次數> raised:<失敗次數> retry:<重試次數> 最慢:<任務名稱>[<id>] <秒數>s成功行的格式是
Task <名稱>[<id>] succeeded in <秒數>s;失敗行含raised;重試行含retry:。最慢指成功行中秒數最大者。本題在瀏覽器內以 Pyodide 執行,只能用 Python 標準函式庫(json、csv、collections、itertools、datetime、re、math、heapq 等)。
作答登入後可作答 - 03
.env 解析器
容易變數
env_text是一份.env內容。請寫一個解析器,規則:- 空行與
#開頭的行略過 - 每行以第一個
=切成 key 與 value - value 若被成對的單引號或雙引號包住,去掉引號、內容原樣保留(引號後的內容忽略);沒有引號時,
#之後(含前面的空白)視為註解去掉 - value 中的
${VAR}用前面已解析的變數取代
依出現順序印出
<key>=<value>。本題在瀏覽器內以 Pyodide 執行,只能用 Python 標準函式庫(json、csv、collections、itertools、datetime、re、math、heapq 等)。
作答登入後可作答 - 空行與
- 04
cron 比對器
中等第 9 章介紹 cron 的五欄格式
分 時 日 月 星期。請實作簡化版比對:第一行輸入 cron 表達式,第二行輸入要比對的時間筆數 n,接著 n 行各是一個YYYY-MM-DD HH:MM。每個欄位支援*、單一數字、a-b區間、a,b,c清單、*/n步進(從 0 起算)。星期採 cron 慣例:0=週日、1=週一 … 6=週六(Python 的weekday()是週一=0,要轉換)。每筆時間印出<時間> 符合或<時間> 不符合。本題在瀏覽器內以 Pyodide 執行,只能用 Python 標準函式庫(json、csv、collections、itertools、datetime、re、math、heapq 等)。
作答登入後可作答

送件鴿飛出去了