#!/usr/bin/env python3 """ utilisation : python3 csv_to_dokuwiki.py systeme-logicos26.csv > sortie.txt 20260316 / python 3.1.2 @ Tenko / code python réalisé par un LLM prompt : Script python3, sans dépendances pour passer d'un fichier csv à un format tableau dokuwiki. Voila comment traiter chaque colonne : la ligne 1 fournit les entêtes la ligne 2 n'est pas à traiter Pour toutes les lignes suivantes colonne A : si rempli, créer un nouveau tableau avec les lignes qui suivent colonne B : ne pas traiter colonne C : traiter uniquement si le caractère ! apparaît dans ce cas il faudra barrer le nom de la colonne D colonne D : faire apparaître le nom, si la colonne E est remplie faire de ce nom un lien avec l'url de la colonne E colonne E : voir colonne D colonne F : afficher «origine» et créer un lien vers l'URL contenue dans la colonne F colonne G : afficher colonne H : afficher colonne I : reprendre le texte en bas de page hors des tableaux colonne J : ne pas traiter colonne K : reprendre le texte en bas de page hors des tableaux colonne L : reprendre en bas de page """ import csv import sys def dokuwiki_link(text, url): if url: return f"[[{url}|{text}]]" return text def strike(text): return f"{text}" def main(csv_file): footnotes = [] with open(csv_file, newline='', encoding="utf-8") as f: reader = csv.reader(f) rows = list(reader) headers = rows[0] current_table_open = False for i, row in enumerate(rows[2:], start=3): # ligne 3 et suivantes colA = row[0].strip() if len(row) > 0 else "" colC = row[2].strip() if len(row) > 2 else "" colD = row[3].strip() if len(row) > 3 else "" colE = row[4].strip() if len(row) > 4 else "" colF = row[5].strip() if len(row) > 5 else "" colG = row[6].strip() if len(row) > 6 else "" colH = row[7].strip() if len(row) > 7 else "" colI = row[8].strip() if len(row) > 8 else "" colK = row[10].strip() if len(row) > 10 else "" colL = row[11].strip() if len(row) > 11 else "" # nouveau tableau si colonne A remplie if colA: if current_table_open: print() print(f"===== {colA} =====") print("^ Nom ^ Origine ^ G ^ H ^") current_table_open = True # traitement colonne D (nom + lien éventuel) name = colD if colE: name = dokuwiki_link(name, colE) # si ! dans colonne C → barrer if "!" in colC: name = strike(name) # colonne F → lien origine origine = "" if colF: origine = f"[[{colF}|origine]]" print(f"| {name} | {origine} | {colG} | {colH} |") # collecte bas de page for note in (colI, colK, colL): if note: footnotes.append(note) # affichage notes hors tableau if footnotes: print("\n----\n") for n in footnotes: print(f"* {n}") if __name__ == "__main__": if len(sys.argv) != 2: print("Usage: csv_to_dokuwiki.py fichier.csv") sys.exit(1) main(sys.argv[1])