import pandas as pd
from pathlib import Path
from string import ascii_lowercase
def convert_csv_to_markdown(csv_path: Path) -> str:
# Load the CSV file without using the first row as headers
df = pd.read_csv(csv_path, header=None)
# Manually set column names
df.columns = ["Type", "Group", "Points", "Question", "Correct Answer",
"Choice 1", "Choice 2", "Choice 3", "Choice 4", "Choice 5",
"Page", "Taxonomy"]
# Generate Markdown output
markdown_output = "## Generated Questions\n\n"
for index, row in df.iterrows():
question = row["Question"]
correct_index = row["Correct Answer"]
# Skip rows where the correct answer index is missing
if pd.isna(correct_index):
continue
correct_index = int(correct_index) - 1 # Convert 1-based index to 0-based
choices = row[["Choice 1", "Choice 2", "Choice 3", "Choice 4", "Choice 5"]].dropna().tolist()
metadata = row[["Page", "Taxonomy"]].dropna().tolist()
markdown_output += f"{index+1}. {question}
"
for i, choice in enumerate(choices):
letter = ascii_lowercase[i] # Get letter a, b, c, etc.
# Indent choices and bold the correct answer
if i == correct_index:
markdown_output += f" {letter}. **{choice}**
"
else:
markdown_output += f" {letter}. {choice}
"
# Add metadata as additional choices, with modified page format
for meta in metadata:
if meta == row["Page"]: # If this metadata item is the page
# Remove first character and prepend "Pages"
page_number = meta[1:] # Remove first character
markdown_output += f" - Pages {page_number}
"
else:
markdown_output += f" - {meta}
"
markdown_output += "
" # Space between questions
return markdown_output