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 :

Plusieurs paramètres à la méthode split [Python 3.X]


Sujet :

Python

  1. #1
    Membre très actif Avatar de viper1094
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 570
    Par défaut Plusieurs paramètres à la méthode split
    Ok alors le titre le dit bien, je voudrais pouvoir mettre plusieurs paramètres à la méthode split, pr un string. En fait le problème est simple. Je voudrais deux séparateurs. Les espaces, et les anti-slash. Du coup j'ai essayé ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    str = "Line1-abcdef \nLine2-abc \nLine4-abcd"; \
    print(str.split(" ","\\"));
    Mais j'ai ça comme erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Traceback (most recent call last):
      File "<pyshell#53>", line 2, in <module>
        print(str.split(" ","\\"));
    TypeError: 'str' object cannot be interpreted as an integer
    Alors, j'ai logiquement essayé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    str = "Line1-abcdef \nLine2-abc \nLine4-abcd"; \
    str=(str.split());\
    print(str.split("\\"))
    (Rappel : un split sans arguments est un split qui par défaut s'occupe des espaces, des tabulations et des saut de lignes)
    Mais code erreur que voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Traceback (most recent call last):
      File "<pyshell#52>", line 3, in <module>
        print(str.split("\\"))
    AttributeError: 'list' object has no attribute 'split'
    Du coup j'ai aucune idée de comment faire.
    PS : Me demandez pas pourquoi je veux séparer ce texte, j'suis en plein apprentissage, j'me suis posé une question, j'ai testé, comme d'hab, sauf que même après 40 min de bidouillage et recherche google, rien du tout. Voilà merci d'avance pr votre aide.

  2. #2
    Membre expérimenté

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 75
    Par défaut
    Salut !

    En fait, split() renvoie une liste, donc quand tu écrit
    Code Python : Sélectionner tout - Visualiser dans une fenêtre à part
    str = str.split()
    ton objet str devient une liste. D'où l'erreur quand tu veux appliquer split() une deuxième fois.
    Par contre, tu peux ré-appliquer split() à chaque élément de la liste obtenue

  3. #3
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 687
    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 687
    Par défaut
    Citation Envoyé par viper1094 Voir le message
    PS : Me demandez pas pourquoi je veux séparer ce texte, j'suis en plein apprentissage, j'me suis posé une question, j'ai testé, comme d'hab, sauf que même après 40 min de bidouillage
    Il suffit de faire help(str.split) pour constater que le séparateur est une chaine de caractères "simple". Si on veut "mieux", on doit regarder du côté de re.split

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

  4. #4
    Membre très actif Avatar de viper1094
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 570
    Par défaut
    D'acc merci pr vos réponses. J'ai essayé de split les éléments de la liste obtenu et ça a fonctionné.

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 811
    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 811
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par viper1094 Voir le message
    En fait le problème est simple. Je voudrais deux séparateurs. Les espaces, et les anti-slash.
    Tu es sûr de vouloir les anti-slashes et non pas les "\n" indiquant une fin de ligne ?
    Parce que pour les "\n" tu as la méthode dédiée splitlines()...

    Citation Envoyé par viper1094 Voir le message
    sauf que même après 40 min de bidouillage et recherche google, rien du tout.
    Et dans tes bidouillages t'as pas pensé à transformer un séparateur en l'autre avant de spliter par exemple ?
    Exemple pour spliter une chaine sur ":" et ";": chaine.replace(";", ":").split(":")...
    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]

  6. #6
    Membre très actif Avatar de viper1094
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 570
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Et dans tes bidouillages t'as pas pensé à transformer un séparateur en l'autre avant de spliter par exemple ?
    Exemple pour spliter une chaine sur ":" et ";": chaine.replace(";", ":").split(":")...
    Merci haha ! C'est effectivement beaucoup plus opti. Ca me donne bien le résultat escompté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    chaine='hee;loe:ej'
    >>> chaine.replace(";",":").split(":")
    ['hee', 'loe', 'ej']
    PS : ( Non car de toutes manières, sauf erreur de ma part, un split sans paramètres s'occupe des espaces, des tabulations et des sauts de lignes, tout à la fois)

  7. #7
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 811
    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 811
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par viper1094 Voir le message
    Merci haha ! C'est effectivement beaucoup plus opti. Ca me donne bien le résultat escompté
    Non non non, ce n'est pas "plus opti", c'est "plus bidouillage". Je t'ai donné cette astuce moitié par humour, moitié par vanité (tu disais avoir cherché 40mn alors que j'ai trouvé en 2s) mais jamais je n'écrirai ça dans un code professionnel. Pour du "plus opti", le re.split() mentionné par wiztricks est probablement ce qu'il y a de mieux.

    Citation Envoyé par viper1094 Voir le message
    PS : ( Non car de toutes manières, sauf erreur de ma part, un split sans paramètres s'occupe des espaces, des tabulations et des sauts de lignes, tout à la fois)
    Exact. J'avais jamais remarqué
    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]

  8. #8
    Membre très actif Avatar de viper1094
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 570
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Non non non, ce n'est pas "plus opti", c'est "plus bidouillage". Je t'ai donné cette astuce moitié par humour, moitié par vanité (tu disais avoir cherché 40mn alors que j'ai trouvé en 2s) mais jamais je n'écrirai ça dans un code professionnel. Pour du "plus opti", le re.split() mentionné par wiztricks est probablement ce qu'il y a de mieux.


    Exact. J'avais jamais remarqué
    Alors oui mais pr le moment j'suis en train de faire un pendu pr le tuto sur python, donc le code professionnel je verrais plus tard. Le re.split me semble également très bien, et de toutes manières j'aurais sûrement oublié le nom avant que je n'ai a utilisé un double split, , et ce jour là je retomberais sûrement sur ma discussion x).
    Maintenant au moins je connais les deux options, merci pr vos réponses ( et ton humour qui m'a quand même donné une bonne idée Sve@r, haha)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 05/08/2018, 00h26
  2. [MySQL] Plusieurs paramètres dynamiques dans une méthode ?
    Par artotal dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 11/07/2008, 15h53
  3. appel d'une méthode avec plusieurs paramètres
    Par soujava dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 11/05/2008, 23h30
  4. [C#2.0] méthode split avec séparateur de plusieurs caratères
    Par CUCARACHA dans le forum Windows Forms
    Réponses: 5
    Dernier message: 05/02/2007, 18h11
  5. Réponses: 2
    Dernier message: 15/06/2004, 11h22

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