File size: 1,011 Bytes
b05542b | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | import re
PATTERN = re.compile(
r"Disse:\s*(.+?)\s*Correction:\s*(.+?)\s*Explication:\s*(.+?)(?=\s*Disse:|\s*$)",
re.DOTALL | re.IGNORECASE,
)
def parse_feedback(text: str) -> list[dict]:
entries = []
for m in PATTERN.finditer(text):
entries.append({
"disse": m.group(1).strip(),
"correction": m.group(2).strip(),
"explication": m.group(3).strip(),
})
return entries
def render_feedback_table(entries: list[dict]) -> list[list[str]]:
return [[e["disse"], e["correction"], e["explication"]] for e in entries]
def strip_markdown(text: str) -> str:
text = re.sub(r"\*\*(.+?)\*\*", r"\1", text)
text = re.sub(r"\*(.+?)\*", r"\1", text)
text = re.sub(r"`(.+?)`", r"\1", text)
text = re.sub(r"#{1,6}\s*", "", text)
text = re.sub(r"^[-*]\s", "", text, flags=re.MULTILINE)
text = re.sub(r"!?\[.*?\]\(.*?\)", "", text)
text = text.replace("▌", "")
text = text.replace("🤖", "")
return text.strip()
|