• [^] # Re: et donc?

    Posté par (site web personnel) . En réponse au journal Comparatif : 6 LLMs locaux face à un exercice Python simple. Évalué à 8.

    déjà, en tant que lead dev je demanderai des clarifications sur le cahier des charges.

    Je voudrais que tu me fasses une fonction en Python pour parser un fichier CSV et le transformer en JSON.

    y'a plein de moyen de l’interpréter. La fonction doit créer un fichier json ou retourner une str ? Comment représenter les données ? tableau de tableaux ? structure de tableaux ? tableau de structures ?

    CSV d'entrée

    field1,field2,field3,field4
    value1,value2,value3,value4
    value5,value6,value7,value8
    value9,value10,value11,value12
    

    Matrices

    [
     ["field1", "field2", "field3", "field4"],
     ["value1", "value2", "value3", "value4"],
     ["value5", "value6", "value7", "value8"],
     ["value9", "value10", "value11", "value12"]
    ]

    Structure de tableaux

    {
     "field1": ["value1", "value5", "value9"],
     "field2": ["value2", "value6", "value10"],
     "field3": ["value3", "value7", "value11"],
     "field4": ["value4", "value8", "value12"]
    }

    Tableaux de structures :

    [
     {
     "field1": "value1",
     "field2": "value2",
     "field3": "value3",
     "field4": "value4"
     },
     {
     "field1": "value5",
     "field2": "value6",
     "field3": "value7",
     "field4": "value8"
     },
     {
     "field1": "value9",
     "field2": "value10",
     "field3": "value11",
     "field4": "value12"
     }
    ]

    Bon, ok, probablement personne ne voudrait la première option. Mais selon les domaines, l'option 2 peut être préférable à la 3 ou réciproquement.

    Pis je demanderais à quoi j'ai accès.

    Si je suis dans un contexte de datascience, je me fais pas chier et j'utilise polars/pandas

    from pathlib import Path
    from typing import Optional
    import polars as pl
    def csv2json(csv_file: Path, json_file: Optional[Path] = None) -> None:
     if not json_file:
     json_file = csv_file.with_suffix(".json")
     pl.read_csv(csv_file).write_json(json_file)
    if __name__ == "__main__":
     csv2json(Path("bla.csv"))

    Si je suis forcé d'utiliser la stdlib :

    import csv
    import json
    from pathlib import Path
    from typing import Optional
    def csv2json(csv_file: Path, json_file: Optional[Path] = None) -> None:
     if not json_file:
     json_file = csv_file.with_suffix(".json")
     with csv_file.open() as f:
     r = csv.DictReader(f)
     rows = list(r)
     with json_file.open("w") as f:
     json.dump(rows, f)
    if __name__ == "__main__":
     csv2json(Path("bla.csv"))