Partage
  • Partager sur Facebook
  • Partager sur Twitter

Garder uniquement les nombres d'une liste

Sujet résolu
Anonyme
    16 mai 2021 à 11:47:31

    Bonjour, j'ai un programme qui récupère une liste, et je voudrais y garder uniquement les chiffres/nombres, donc supprimer toutes les lettres, caractères spéciaux...

    Quelqu'un aurait une idée ?

    -
    Edité par Anonyme 16 mai 2021 à 11:47:53

    • Partager sur Facebook
    • Partager sur Twitter
      16 mai 2021 à 12:30:03

      williambr a écrit:

      Bonjour, j'ai un programme qui récupère une liste, et je voudrais y garder uniquement les chiffres/nombres, donc supprimer toutes les lettres, caractères spéciaux...

      Quelqu'un aurait une idée ?

      Ce que tu souhaites c'est récupérer l'ensemble des nombres excepté autres choses.

      Se sont les exceptions qu'il faut utiliser pour créer ta nouvelle liste.

      my_list = []
      for value in values:
          try:
              float(value)  # si ça ne passe pas, la ligne suivante ne s'exécute pas.
              my_list.append(value)
          except ValueError:
              continue
      



      -
      Edité par fred1599 16 mai 2021 à 12:30:44

      • Partager sur Facebook
      • Partager sur Twitter

      Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
      La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

      Anonyme
        16 mai 2021 à 13:40:58

        J'ai oublié de préciser que ce que je veux garder ressemble à ceci : 12,3 / 78,6 / 45,1

        Alors qu'en language python, les chiffres sont écrit comme cela : 12.3 / 78.6 / 45.1

        Donc avec ton programme, ces chiffres que je souhaites garder et qui ont donc des virgules ne sont pas détectés comme des chiffres... donc il me les enlève à chaque fois.

        J'ai essayé de convertir avec ce programme : 

        liste = ["1", "5", "89", "45,2", "a", "^"]
        
        for valeur in liste:
            result = valeur
            resultplace = result.replace(",", ".")
            resultfinal = float(resultplace)
            try:
                float(valeur)
                liste.append(valeur)
            except ValueError:
                continue
            print(result)

        Mais ca ne marche pas :

        ValueError: could not convert string to float: 'a'

        -
        Edité par Anonyme 16 mai 2021 à 13:56:04

        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          16 mai 2021 à 14:02:24

          Salut,

          Il suffit de remplacer les virgules par des points. En reprenant l'exemple de fred1599 :

          my_list = []
          for value in values:
              try:
                  value = value.replace(",", ".")
                  float(value)  # si ça ne passe pas, la ligne suivante ne s'exécute pas.
                  my_list.append(value)
              except ValueError:
                  continue

          Edit: tu transformes tes virgules en points dans la variable resultplace et ensuite dans le try tu utilises valeur !!!!!

          -
          Edité par Anonyme 16 mai 2021 à 14:07:46

          • Partager sur Facebook
          • Partager sur Twitter
            16 mai 2021 à 17:00:52

            Si on veut garder les virgules dans les nombres, histoire de seulement les extraire:
            import re
            my_list = ['abc', '12,3', '-3,4', '6,5a', 'def']
            my_list = [element for element in my_list if re.search(r'^-?[0-9]+,[0-9]+$', element)]
            print(my_list)
            • Partager sur Facebook
            • Partager sur Twitter

            Le Tout est souvent plus grand que la somme de ses parties.

            Anonyme
              16 mai 2021 à 17:13:38

              Diablo76 a écrit:

              Salut,

              Il suffit de remplacer les virgules par des points. En reprenant l'exemple de fred1599 :

              my_list = []
              for value in values:
                  try:
                      value = value.replace(",", ".")
                      float(value)  # si ça ne passe pas, la ligne suivante ne s'exécute pas.
                      my_list.append(value)
                  except ValueError:
                      continue

              Edit: tu transformes tes virgules en points dans la variable resultplace et ensuite dans le try tu utilises valeur !!!!!

              -
              Edité par Diablo76 il y a environ 3 heures

              Merci beaucoup ta solution fonctionne ! 

              • Partager sur Facebook
              • Partager sur Twitter

              Garder uniquement les nombres d'une liste

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown