Bonjour les codeurs,
Je cherche une piste pour éviter l’incohérence des données lors de la lecture d’un fichier CSV.
Comme dans le cours de maxime j’essaie de lire un fichier csv.
Task.init {
if let sourceFichier = URL(string: "https://static.data.gouv.fr/resources/fichier-consolide-des-bornes-de-recharge-pour-vehicules-electriques/20220703-081700/consolidation-etalab-schema-irve-v-2.0.2-20220702.csv") {
for try await line in sourceFichier.lines {
let colonnes = line.split(separator: ",")
let nom_amenageur = colonnes[0]
let siren_amenageur = colonnes[1]
let contact_amenageur = colonnes[2]
let nom_operateur = colonnes[3]
let contact_operateur = colonnes[4]
let telephone_operateur = colonnes[5]
let nom_enseigne = colonnes[6]
let id_station_itinerance = colonnes[7]
let id_station_local = colonnes[8]
let nom_station = colonnes[9]
let implantation_station = colonnes[10]
let adresse_station = colonnes[11]
let code_insee_commune = colonnes[12]
let coordonneesXY = colonnes[13]
let nbre_pdc = colonnes[14]
let id_pdc_itinerance = colonnes[15]
let id_pdc_local = colonnes[16]
let puissance_maximale = colonnes[17]
let prise_type_ef = colonnes[18]
let prise_type_2 = colonnes[19]
let prise_type_combo_ccs = colonnes[20]
let prise_type_chademo = colonnes[21]
let prise_type_autre = colonnes[22]
let paiement_acte = colonnes[23]
let paiement_autre = colonnes[24]
let condition_acces = colonnes[25]
let reservation = colonnes[26]
let horaires = colonnes[27]
let accessibilite_pmr = colonnes[27]
let restriction_gabarit = colonnes[28]
let station_deux_roues = colonnes[29]
let raccordement = colonnes[30]
let num_pdl = colonnes[31]
let date_mise_en_service = colonnes[32]
let observations = colonnes[33]
let date_maj = colonnes[34]
let last_modified = colonnes[35]
let datagouv_dataset_id = colonnes[36]
let datagouv_resource_id = colonnes[37]
let datagouv_organization_or_owner = colonnes[38]
let consolidated_longitude = colonnes[39]
let consolidated_latitude = colonnes[40]
let consolidated_code_postal = colonnes[41]
let consolidated_commune = colonnes[42]
let consolidated_is_lon_lat_correct = colonnes[43]
let consolidated_is_code_insee_verified = colonnes[44]
let essai = colonnes[46]
//print("\(nom_station) -- \(adresse_station) -- \(implantation_station) -- \(puissance_maximale)")
print("\(essai)")
//if nom_amenageur.count >= 3 {
// break
//}
}
print("fin de lecture")
}
}
j’ai l’impression que si une donnée contient une « , » tout se décale, l’entête ne correspond plus à la colonne se qui est le cas pour la colonne
coordonneesXY (13)
[-0.56711100,44.89088900]
-0.56711100 se trouve bien colonne 13, mais 44.89088900] se trouve dans la colonne 14, et les colonnes d’après sont décalées par rapport aux entêtes. C’est le bazar.
J’ai l’impression aussi que le décalage peut se faire en pleine lecture et donc la donnée de résultat n’est pas celle attendue ? exemple,
pour les colonnes consolidated_longitude (43) ou consolidated_latitude (44)
48.663549
apeira-technologies
48.919807
40230
11430
45.9221544
societe-d-installation-de-plomberie-electricite-chauffage-et-climatisation
5.24
On se retrouve avec du texte et des codes postaux en plein milieu d’une colonne de coordonnée GPS, à première vu sous réserve en conversion sous Excel le fichier semble. je souhaite savoir si d’autres personnes ont été confronté et les pistes à envisagé pour traiter des données cohérentes
pour éviter le décalage de colonne je peux tester si la virgule est le dernier caractère de la chaine pour le split
let colonnes = line.split(separator: « , »)
Merci pour les retours
Bonne soirée