Forum Programmation.perl récuperer l'initiale d'un prenom

Posté par  .
Étiquettes : aucune
0
2
mar.
2010
Bonjour à toutes et à tous,

J'ai un fichier csv construit ainsi:

"jean","dupont","A1"
"gilbert","martin","A2"

à partir duquel je veux créer le tableau suivant:
A1jdupont
A2gmartin

Donc je voudrais ne récupérer que la première lettre du prénom de la variable $prenom.

J'ai écris le script suivant:


#!/usr/bin/perl -w

open (LISTE, "
}


qui me donne le résultat suivant:
A1jeandupont
B2gilbertmartin

Quelqu'un a t-il une idée?
Merci
  • # RTFM

    Posté par  . Évalué à 2.

  • # en 54

    Posté par  (site web personnel) . Évalué à 5.

    $ perl -F'"' -ape'$_=$F[5].(substr$F[1],0,1).$F[3]."\n"'

    pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.

  • # gourmandise

    Posté par  (site web personnel) . Évalué à 3.

    sans chercher à faire compact le regex serait plus lisible avec ? pour gérer la gourmandise


    my ($nom, $prenom, $group) = $ligne =~ m/''(.*?)'',''(.*?)'',''(.*?)''/;

    et

    $initial=substr($prenom,0,1); # chaine, offset, longueur

  • # C'est Ok

    Posté par  . Évalué à 1.

    Comme je ne suis pas gourmand mais gourmet j'ai conservé mon regex et ai ajouté le substr suggéré par Yves.
    Ce qui donne le script suivant:
    <pre>
    open (LISTE, "<liste.csv") or die "$!";
    while (my $ligne = <LISTE>) {
    next unless my ($prenom, $nom, $group) =
    $ligne =~ /"([^"]+[^"])",\s*"([^"]+)",\s*"([^"]+)"/g;
    $initial=substr($prenom,0,1);
    print "$group$initial$nom\n";
    }
    </pre>

    Qui me donne le résultat que je souhaitais
    A1jdupont
    A2gmartin

    Un grand merci à tous
  • # Encore une fois en python

    Posté par  . Évalué à 2.

    Oui, je suis lourd, mais bon :

    import csv
    for x in csv.reader(file("monfichier.csv")):
      print x[2] + x[0][0] + x[1]


    Que je trouve, comme d'hab, plus lisible.
    • [^] # Re: Encore une fois en python

      Posté par  . Évalué à 2.

      Tiens d'ailleurs ce serait encore plus clair comme ça :
      import csv
      for prenom, nom, code in csv.reader(file("monfichier.csv")):
        print code + prenom[0] + nom

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.