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 :

Casser chaîne alpha-numérique selon critère


Sujet :

Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2014
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2014
    Messages : 28
    Points : 16
    Points
    16
    Par défaut Casser chaîne alpha-numérique selon critère
    Bonjour à tous,

    Je me lance sur Python et je bute sur un besoin de traitement d'un fichier CSV.

    Je souhaiterais pouvoir nettoyer une colonne (la 3ème) en ne conservant que les premiers éléments avant un séparateur (en l'occurrence "-"), puis passer au pack suivant et ainsi de suite.

    Ultimement, j'aimerais pouvoir supprimer les doublons dans les résultats, et générer un output CSV propre.

    Voici un fichier d'exemple avec la source à gauche et le résultat souhaité à droite.

    Merci par avance si quelqu'un a du temps.

    NOTE : voici ma base de travail, mais étrangement ce bout de code efface tout mon fichier, je ne sais pas pourquoi.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    import csv
    import re
    r = csv.reader(open('.../test.csv'))
    with open('.../test2.csv', 'w') as csvfile:
        writer = csv.writer(csvfile, delimiter=',')
        for row in r:
            row[2] = re.sub('\-.*', '', row[2])
            writer.writerow(row)[ATTACH]235343[/ATTACH][ATTACH]235343[/ATTACH]
    G.

  2. #2
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 053
    Points : 9 392
    Points
    9 392
    Par défaut
    Tu lis une ligne row, et tu utilises ensuite row[2] ; A mon avis, row[2] représente au mieux le 3ème caractère de la ligne ... ou plutôt, row[2] représente une autre chaine, qui n'a jamais été initialisée , et donc une chaîne vide.
    En tout cas, row[2] ne peut pas représenter une sous-chaîne de row, en se basant sur tel ou tel séparateur. Comment python pourrait-il deviner que tu as envie de découper la chaîne en sous-chaîne, et comment pourrait-il deviner quel est le séparateur à utiliser ?

    Il faut que tu utilises la méthode split().
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par tbc92 Voir le message
    En tout cas, row[2] ne peut pas représenter une sous-chaîne de row, en se basant sur tel ou tel séparateur. Comment python pourrait-il deviner que tu as envie de découper la chaîne en sous-chaîne, et comment pourrait-il deviner quel est le séparateur à utiliser ?

    Il faut que tu utilises la méthode split().
    Que nenni!
    r est n csv.reader, normalement, çà retourne une liste après avec fait un .split suivant le "delimiter" du fichier CSV.

    Pour le reste, il y a deux soucis: lire un fichier csv et l'écrire à l'identique, c'est pas bien compliqué mais je ne comprend pas pourquoi on a un fichier .XLSX en fichier joint. L'autre soucis est le regexp, mais çà serait mieux de dire de quoi on part et ce qu'on veut.

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

Discussions similaires

  1. Réponses: 22
    Dernier message: 22/10/2012, 21h53
  2. Regexp sur une chaîne alpha numérique
    Par H.ile dans le forum Tcl/Tk
    Réponses: 0
    Dernier message: 24/08/2010, 10h42
  3. Réponses: 5
    Dernier message: 03/07/2006, 16h39
  4. Réponses: 7
    Dernier message: 29/06/2006, 11h11
  5. Réponses: 4
    Dernier message: 19/06/2006, 19h15

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