Supprimer un élément d'une liste

Fermé
preliator - Modifié le 26 déc. 2019 à 23:03
 trifou - 27 déc. 2019 à 20:46
Bonjour,

Je dispose d'un fichier CSV que j'ai importé dans Python. Les éléments sont ajoutés dans une liste grâce à cette formule :

import csv

liste = []

with open("data.csv", "r", newline = '') as donnees:
 reader = csv.reader(donnees, delimiter = ";")
 liste.extend(reader)



En effectuant un "print(liste)", je me retrouve avec tous les éléments du fichier CSV, à, savoir :

[['NOM', 'PRENOM', 'NAISSANCE', 'VILLE', 'AGE'],  ["B'RUNA", 'PAUL', '20/12/1954', 'NICE', '58']]


Sur cette liste, si un ' apparait, j'aimerais pouvoir le supprimer. Ainsi, B'RUNA deviendra BRUNA.

Avec ce type de liste, j'avoue ne pas savoir comment faire pour accéder à chacun de ces éléments.

Merci.

3 réponses

Bonjour,

liste.extend(value.replace("'", '') for value in reader)


Si les apostrophes doivent être supprimées uniquement sur certaines colonnes, alors il faudra le faire avant de le passer à extend.

quelque chose comme

values = list(reader)
for i in (0, 1):
    values[i] = values[i].replace("'", '')
liste.extend(values)
1
Merci énormément pour votre réponse qui m'a bien aidé.
Dans mon cas, j'étais confronté à une liste de listes (tableau à 2 dimensions). J'ai du modifier un peu le code, mais j'ai enfin la solution à mon problème de base, à savoir supprimer les ' de ma liste.

Voici le code :

import csv
import re
import sys

liste = []
with open("data.csv", "r", newline = '') as donnees:
 reader = csv.reader(donnees)
 liste.extend(reader)

for i in range(len(liste)):
 for j in range(len(liste[i])):
  liste[i][j] = liste[i][j].replace("'", '')
0
Bonjour,

Ce n'est pas trop utile de parcourir ta liste pour faire les remplacements, alors que tu peux le faire à l'insertion.

with open("data.csv", "r", newline='') as donnees:
    reader = csv.reader(donnees)
    for line in reader:
        liste.append(list(col.replace("'", '') for col in line))
0
D'accord, une autre manière plus simple pour y arriver :)

Lorsque je lance le programme, j'obtiens ceci :

['ZERANO;CLAUDE;29/08/1995;LA CIOTAT;21']
['CANINO;KEVIN;21/02/2001;SAINT ETIENNE;14']
['CASTEL;JULIETTE;10/12/2000;LYON;15']


Les ' sont au début et à la fin de chaque listes. Est-il possible de placer chaque éléments de mes listes entre ' ? Cela donnerait ceci :

['ZERANO'; 'CLAUDE'; '29/08/1995' ; 'LA CIOTAT' ; '21']
['CANINO' ; 'KEVIN' ; '21/02/2001' ; 'SAINT ETIENNE' ; '14']
['CASTEL' ; 'JULIETTE' ; '10/12/2000' ; 'LYON' ; '15']


Merci.
0
Au cas où tu ne l'aurais pas vu, tu n'as pas utilisé de delimiter pour les colonnes de ton csv, il me paraissait tellement évident que tu l'avais fourni que je n'avais même pas fait gaffe que tu ne l'avais pas stipulé...

with open("data.csv", "r", newline = '') as donnees:
    reader = csv.reader(donnees, delimiter=';')
    for line in reader:
        liste.append(list(col.replace("'", '') for col in line))
0