IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Supprimer élément d'une liste


Sujet :

Python

  1. #1
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Juin 2018
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Alimentation

    Informations forums :
    Inscription : Juin 2018
    Messages : 180
    Par défaut Supprimer élément d'une liste
    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 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    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 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [['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.

  2. #2
    Membre Expert
    Avatar de Pyramidev
    Homme Profil pro
    Tech Lead
    Inscrit en
    Avril 2016
    Messages
    1 513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Tech Lead

    Informations forums :
    Inscription : Avril 2016
    Messages : 1 513
    Par défaut
    Bonjour,

    Il faut décomposer le problème en sous-problèmes.
    D'abord, il faut savoir coder une fonction qui, quand on lui donne une seule chaîne en entrée, retourne une chaîne sans les caractères '.
    Ensuite, il faut savoir coder une fonction qui, quand on lui donne une liste de chaînes en entrée, retourne une liste de chaînes sans les caractères '. Cette fonction peut appeler la précédente si besoin.
    Enfin, on peut coder la fonction qui, quand on lui donne une liste de listes de chaînes en entrée, retourne une liste de listes de chaînes sans les caractères '. Cette fonction peut appeler la précédente si besoin.

    Voici un début de code pour pouvoir tester de manière automatique si ce que tu essaies de coder est bon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    import unittest
     
    def fix_str(param):
        return param  # TODO: write the real code.
     
    def fix_list_str(param):
        return param  # TODO: write the real code.
     
    def fix_list_list_str(param):
        return param  # TODO: write the real code.
     
    class TestMyFunctions(unittest.TestCase):
     
        def test_fix_str(self):
            self.assertEqual(fix_str("B'RUNA"), "BRUNA")
            self.assertEqual(fix_str('PAUL'), 'PAUL')
            self.assertEqual(fix_str('20/12/1954'), '20/12/1954')
     
        def test_fix_list_str(self):
            param = ["B'RUNA", 'PAUL', '20/12/1954', 'NICE', '58']
            result = fix_list_str(param)
            expected = ["BRUNA", 'PAUL', '20/12/1954', 'NICE', '58']
            self.assertEqual(result, expected)
     
        def test_fix_list_list_str(self):
            param = [
                ['NOM', 'PRENOM', 'NAISSANCE', 'VILLE', 'AGE'],
                ["B'RUNA", 'PAUL', '20/12/1954', 'NICE', '58']
            ]
            result = fix_list_list_str(param)
            expected = [
                ['NOM', 'PRENOM', 'NAISSANCE', 'VILLE', 'AGE'],
                ["BRUNA", 'PAUL', '20/12/1954', 'NICE', '58']
            ]
            self.assertEqual(result, expected)
     
    if __name__ == "__main__":
        unittest.main()
    Si tu exécutes le script ci-dessus, cela devrait t'afficher que trois tests ont été exécutés, mais que les trois ont échoué.
    Dans ce script, unittest.main() exécute toutes les méthodes de TestMyFunctions dont le nom commence par test.
    Quand la méthode assertEqual est exécutée, si ses deux paramètres n'ont pas la même valeur, alors le test courant échoue.

    Pour te donner un début de solution, si on écrit le bon code pour la fonction fix_str :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    def fix_str(param):
        return param.replace("'", '')
    et si on relance les tests, alors test_fix_str réussira, donc seuls les 2 autres tests échoueront.

    Pour coder le reste, je te laisse chercher.

  3. #3
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 716
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 716
    Par défaut
    Salut,

    Citation Envoyé par preliator Voir le message
    Avec ce type de liste, j'avoue ne pas savoir comment faire pour accéder à chacun de ces éléments.
    Le fichier CSV est lu ligne par ligne.
    Ce qui fabrique une liste de "lignes".
    Chaque ligne sera elle-même représentée par une liste.

    Une liste de listes est aussi appelé tableau à deux dimensions.
    Pour le parcourir, il faut faire une double boucle: pour chaque ligne, pour chaque mot dans ligne: faire....
    Et normalement, balayer les listes de listes avec des boucles imbriquées est ce qu'on apprend dans tous les tutos.

    Plus tard l'expérience vous apprendra que le fichier étant lu ligne par ligne, il sera plus efficace de corriger chaque ligne (une liste simple) voire le contenu du fichier "globalement" avant de l'ajouter à la liste de lignes.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Juin 2018
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Alimentation

    Informations forums :
    Inscription : Juin 2018
    Messages : 180
    Par défaut
    Un grand merci pour vos explications claires et précises

Discussions similaires

  1. [Python 3.X] Supprimer éléments d'une liste contenant un caractère donné
    Par algerino77 dans le forum Général Python
    Réponses: 4
    Dernier message: 24/11/2016, 23h37
  2. supprimer élément d'une liste
    Par jojo971 dans le forum Général Python
    Réponses: 8
    Dernier message: 26/11/2011, 10h47
  3. Supprimer élément d'une liste après un query sql
    Par gégé140488 dans le forum Hibernate
    Réponses: 1
    Dernier message: 27/09/2010, 12h25
  4. Réponses: 3
    Dernier message: 25/10/2006, 19h08
  5. Supprimer des éléments d'une liste
    Par espadon1 dans le forum Langage
    Réponses: 2
    Dernier message: 31/05/2006, 15h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo