36 lines
1.2 KiB
Python
36 lines
1.2 KiB
Python
import json, sys
|
|
from typing import Dict
|
|
|
|
# Пример простого парсера: ищет ключевые слова в строках
|
|
|
|
def parse(text: str) -> Dict:
|
|
result = {
|
|
"title": None,
|
|
"subject": None,
|
|
"deadline_hint": None,
|
|
"deliverable_type": None,
|
|
"grading_hints": None,
|
|
}
|
|
for line in text.splitlines():
|
|
l=line.lower()
|
|
if "title" in l:
|
|
result["title"] = line.split(":",1)[-1].strip()
|
|
elif "subject" in l:
|
|
result["subject"] = line.split(":",1)[-1].strip()
|
|
elif "deadline" in l:
|
|
result["deadline_hint"] = line.split(":",1)[-1].strip()
|
|
elif "deliverable" in l:
|
|
result["deliverable_type"] = line.split(":",1)[-1].strip()
|
|
elif "grading" in l or "feedback" in l:
|
|
result["grading_hints"] = line.split(":",1)[-1].strip()
|
|
return result
|
|
|
|
if __name__ == "__main__":
|
|
if len(sys.argv) != 2:
|
|
print("Usage: python extract_card.py <path_to_raw_text_file>")
|
|
sys.exit(1)
|
|
with open(sys.argv[1],"r",encoding="utf-8") as f:
|
|
text=f.read()
|
|
card=parse(text)
|
|
print(json.dumps(card,ensure_ascii=False,indent=2))
|