feat(study): 보기 동그라미 숫자 (①②③④) 형식 지원 + 10회분 추가
운영 중 발견 — 2023년 이후 회차 md 가 보기를 ①②③④ 으로 표기. 파서가 "1번:" / "1." / "1)" 만 매칭해서 100문항 보기 1~4번 비어있음 → import abort. CIRCLED 매핑 활용해서 동그라미 숫자도 처리 추가. 운영 결과 (10회분 추가, 누락 png 제외): - 2022년 3회 / 2023년 1회: 100건 (이미지 0) - 2023년 2회: 98건 / 2023년 3회: 96건 (png 일부 누락) - 2024년 1·2·3회: 각 98건 (png 누락) - 2025년 1·2·3회: 97/99/97건 (png 누락) - audit: HC 0 / LC-5 1건 자동 fix (q2183 표 구분자) - 누락 png 19건은 사용자 추후 보충 예정 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -208,12 +208,18 @@ def _extract_meta(md: str) -> dict[str, str]:
|
||||
def _parse_choices(raw: str) -> tuple[str, str, str, str]:
|
||||
"""보기 fenced block → 4개 텍스트.
|
||||
|
||||
한 줄당 "{N}번:", "{N}.", "{N})" 형태. 멀티라인 보기는 다음 항목 직전까지 합침.
|
||||
한 줄당 "{N}번:", "{N}.", "{N})", "①②③④" 모두 인정. 멀티라인 보기는 다음 항목 직전까지 합침.
|
||||
"""
|
||||
lines = raw.splitlines()
|
||||
buckets: dict[int, list[str]] = {1: [], 2: [], 3: [], 4: []}
|
||||
current: Optional[int] = None
|
||||
for line in lines:
|
||||
# 동그라미 숫자 ①②③④ 우선 시도
|
||||
m_circ = re.match(r"^\s*([①②③④])\s*(.*)$", line)
|
||||
if m_circ:
|
||||
current = CIRCLED[m_circ.group(1)]
|
||||
buckets[current].append(m_circ.group(2).rstrip())
|
||||
continue
|
||||
# "1번:" / "1." / "1)" 모두 인정. 점/괄호 다음 공백 허용.
|
||||
m = re.match(r"^\s*(\d)\s*[번.):]\s*(.*)$", line)
|
||||
if m:
|
||||
|
||||
Reference in New Issue
Block a user