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 :

Retirer le \n en fin de caractère dans une liste


Sujet :

Python

  1. #1
    Membre actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 107
    Par défaut Retirer le \n en fin de caractère dans une liste
    Hello !

    Après avoir extraire une série de chiffre dans un fichier texte via la commande with open, je me retrouve avec la liste suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ['13.5\n', '17\n', '9.5\n', '12\n', '14\n', '6\n', '5.5\n', '8.5\n', '10.5\n', '29\n', '14\n', '9\n', '15.5\n', '11.5\n', '16\n', '18\n', '13\n', '12.5\n', '15.5\n']
    Info : j'utilise python 3

    Là je bloque car j'aimerai retirer tout les \n. J'aimerai ensuite pouvoir passer les éléments de cette liste en float.

    Si quelqu'un a une idée merci beaucoup !

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    Tu peux faire ceci pour supprimer les retours à la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    x = [xx.strip() for xx in x]
    Mais ce n'est pas vraiment nécessaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    x = ['13.5\n', '17\n', '9.5\n', '12\n', '14\n', '6\n', '5.5\n', '8.5\n', '10.5\n', '29\n', '14\n', '9\n', '15.5\n', '11.5\n', '16\n', '18\n', '13\n', '12.5\n', '15.5\n']
     
    xf = [float(xx) for xx in x]
    Tu pourrais aussi nous montrer le code de lecture des données pour voir comment ne pas stocker le retour à la ligne (même si le code ci-dessus fonctionne)

  3. #3
    Membre actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 107
    Par défaut
    Bonjour,

    Je ne comprends pas le code si ma liste s’appelle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    notes = ['13.5\n', '17\n', '9.5\n', '12\n', '14\n', '6\n', '5.5\n', '8.5\n', '10.5\n', '29\n', '14\n', '9\n', '15.5\n', '11.5\n', '16\n', '18\n', '13\n', '12.5\n', '15.5\n', '17\n']
    Je ne vois pas à quoi correspond les xx.

    Je devrais écrire : notef = [float(xx) for xx in notes] ?

  4. #4
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 627
    Par défaut
    Tout à fait.
    Et voir un tuto sur les listes en compréhension.

  5. #5
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 627
    Par défaut
    Tu peux aussi tester les lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    l1 = ['13.5\n', '17\n', '9.5\n', '12\n', '14\n', '6\n', '5.5\n', '8.5\n', '10.5\n', '29\n', '14\n', '9\n', '15.5\n', '11.5\n', '16\n', '18\n', '13\n', '12.5\n', '15.5\n']
    l2=[el.strip() for el in l1]
    print(l2)
    l3=[float(el) for el in l1]
    print(l3)
    l4=[el.replace("\n","") for el in l1]
    print(l4)

  6. #6
    Membre actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 107
    Par défaut
    Merci beaucoup,

    J'aimerai aussi savoir comment faire pour mettre cette liste de float avec deux décimales. Je sais qu'avec un float, je peux utiliser un "{:.2f}".format(xx), mais je ne vois pas comment l'appliquer à toute une liste

  7. #7
    Membre actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 107
    Par défaut
    Voici le code de lecture de mes données

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    nouvelle = []
    with open("/home/judith/Bureau/notes.txt", "r") as filin:
    	for note in filin:
    		nouvelle.append(note)
     
    nouvelle = [xx.strip() for xx in nouvelle]
    print(nouvelle)

  8. #8
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 790
    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 790
    Par défaut
    Salut,

    Pourquoi construire une liste pour la retravailler ensuite plutôt que lui ajouter des items "propres" des le début:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    nouvelle = []
    with open("/home/judith/Bureau/notes.txt", "r") as filin:
    	for note in filin:
    		nouvelle.append(note.strip())
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  9. #9
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 627
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    l1 = [3.2236,5.879]
    l2=[round(el,2) for el in l1]

  10. #10
    Membre actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 107
    Par défaut
    Je travaille " à la chaîne " sur des données que l'on m’envoie afin de mieux les uniformiser. Je ne peux pas à chaque fois reconstruire une liste, d'où mon utilisation de Python3.

    Pour passer de 4 chiffres ou 3 chiffres significatifs le code marche. Mais pour passer de 1 chiffre à 2 chiffres significatifs le code ne marche pas.

  11. #11
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 790
    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 790
    Par défaut
    Citation Envoyé par judkil Voir le message
    Mais pour passer de 1 chiffre à 2 chiffres significatifs le code ne marche pas.
    17.2 est un nombre, on peut l'écrire "17.20".
    Mais il ne faut pas confondre valeur (que l'on peut arrondir) et sa représentation sous forme de chaine de caractères (que l'on peut uniformiser pour avoir le même nombre de chiffres après la virgule).

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

  12. #12
    Membre actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 107
    Par défaut
    Je souhaiterai afficher les chiffres de la liste note sous forme de foat à deux décimales si possible. La méthode qui passe de trois décimales à deux décimales ne marche pas quand on veut l'afficher de une décimale à deux décimales.

  13. #13
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 868
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 868
    Billets dans le blog
    1
    Par défaut
    Bonjour

    Tu lis les conseils qui vont avec les exemples ? Surtout ceux qui disent qu'il y a une différence entre "valeur du nombre" et "affichage du nombre".

    Par ailleurs tu ne voudrais pas être plus explicite et dire en quoi ça ne marche pas ???
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  14. #14
    Membre actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 107
    Par défaut
    Sve@r si tu n'as pas la réponse ne brasses pas de la mémoire dans un serveur.

    Si je me tourne vers des experts c'est par ce que mes recherches et mes tests en shell n'ont pas aboutis. Jerome Briot, wiztricks et marco056 merci de vos réponses, je suis encore preuneuse de solutions pour cette question, si possible

  15. #15
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2013
    Messages : 25
    Par défaut
    essayer avec la librairie Decimal de Python qui gère ce type de cas :

    https://docs.python.org/3.7/library/decimal.html

  16. #16
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 790
    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 790
    Par défaut
    Citation Envoyé par judkil Voir le message
    Si je me tourne vers des experts c'est par ce que mes recherches et mes tests en shell n'ont pas aboutis.
    Sve@r connaît très bien la réponse...
    Mais pas sûr qu'on comprenne bien la question: elle est sans rapport avec la question initiale. Et si vous ne savez pas faire la différence entre "valeur" et "représentation" comment voulez vous chercher? Peut être qu'il faut regarder du côté de "str.format".

    note: n'oubliez pas que vous êtes supposé connaître un minimum les bases de Python avant de poster.

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

  17. #17
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 868
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 868
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par laurentv88 Voir le message
    essayer avec la librairie Decimal de Python qui gère ce type de cas
    Pas tout à fait. La librairie Decimal n'est pas faite pour afficher les flottants mais pour leur faire faire des calculs en précision exacte, sans que la perte de précision due à l'impossibilité de convertir certains nombres décimux en base 2 change la valeur d'une nième décimale (ce qui peut être catastrophique dans les comptes bancaires par exemple)

    Citation Envoyé par judkil Voir le message
    Sve@r si tu n'as pas la réponse ne brasses pas de la mémoire dans un serveur.
    Si seulement j'avais la question au moins...

    Citation Envoyé par judkil Voir le message
    Si je me tourne vers des experts c'est par ce que mes recherches et mes tests en shell n'ont pas aboutis.
    Oui, le détail de ces recherches c'est ce que je t'ai demandé tantôt. Sinon t'as tenté un printf en shell ? Non je dis ça juste au cas où...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Afficher un caractère dans une Liste
    Par midotoon dans le forum C#
    Réponses: 0
    Dernier message: 04/11/2008, 12h43
  2. Réponses: 3
    Dernier message: 13/05/2008, 14h11
  3. Chercher une chaîne de caractères dans une liste
    Par baedal dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 29/05/2007, 00h42
  4. Réponses: 4
    Dernier message: 22/05/2006, 12h53
  5. Saisie de plusieurs caractère dans une liste déroulante
    Par Oluha dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 07/03/2005, 15h32

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