patient-virtuel-dentiste / parse_feedback.py
carlosduplar
build-small-hackathon: initial Gradio + Modal app scaffold
b05542b
Raw History Blame
1.01 kB
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()