knowledge_codes.py 656 B

12345678910111213141516171819202122
  1. """知识点编码解析:多值分隔、族前缀匹配等。"""
  2. from __future__ import annotations
  3. import re
  4. _KNOWLEDGE_CODE_SPLIT = re.compile(r"[,\n;\uFF1B\uFF0C|/]+")
  5. def split_knowledge_codes(knowledge_code: str | None) -> list[str]:
  6. if not knowledge_code:
  7. return []
  8. parts = _KNOWLEDGE_CODE_SPLIT.split(knowledge_code)
  9. return [p.strip() for p in parts if p and p.strip()]
  10. def knowledge_family_prefix(code: str) -> str | None:
  11. """J7-EQ-001 -> J7-EQ-,用于同小节多编码的宽松匹配。"""
  12. c = (code or "").strip()
  13. m = re.match(r"^(.+)-\d+$", c)
  14. if m:
  15. return f"{m.group(1)}-"
  16. return None