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...
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
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)
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'
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 !!!!!
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)
Le Tout est souvent plus grand que la somme de ses parties.
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 !
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.
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)
Le Tout est souvent plus grand que la somme de ses parties.