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 :

Gestion des chaînes de caractères, des colonnes dans un fichier texte


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 5
    Par défaut Gestion des chaînes de caractères, des colonnes dans un fichier texte
    Bonjour à toutes & tous,

    Je débute à python et j'avoue avoir quelques difficultés à me remettre aux développements.
    J'ai une expérience en shell (enfin je me débrouille pour un mec qui ne fait pas du dev) mais j'avoue avoir des problèmes pour basculer sur un langage orienté Objet lorsque que l'on ne connait pas très bien les modules, classes, méthodes à utiliser.
    J'ai parcouru le forum sans réellement trouver ce que je cherchais et lu + acheter le livre "comment dev en python 3 (mise à disposition aussi sur le site)

    Ma problématique:

    Je souhaiterais parcourir un fichier, ne pas prendre les lignes en commentaires, et pour chaque ligne, définir une variable qui va contenir la valeur de chaque colonne.
    Ce fichier sera un fichier de configuration pour lequel chaque colonne correspond à un paramètre que je dois récupérer pour le substituer dans un programme tiers.
    Mon programme fonctionne en Shell/AWK mais je souhaite le convertir en Python pour la portabilité et la puissance du langage.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    import os
     
    nico=open('D:/Utilisateurs/nico/Desktop/Python/zoo.txt', 'r')
    lignes=nico.readlines()
    lignes
     
    for i in lignes:
        #print (i[0])
        if i[0] !='#':
            print('i =', i, 'et la longueur', len(i))
    .....
    Alors je fais des trucs ridicules mais j'ai cherche dans string avec le split, les exemples que je trouve manipules plutôt les caractères un à un.

    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    grep -v "^\#" ${CONF_KFC} | while read LINE
                    do
                        GENDYV=$(echo $LINE | awk '{print $2}')
                        GENMOD=$(echo $LINE | awk '{print $3}')
                        GENDST=$(echo $LINE | awk '{print $4}')
     
                   done
    Mon objectif est surtout de savoir où je dois taper pour m'en sortir tout en garantissant la portabilité du code (pas comme ma petite crotte ci-dessus)

    merci

  2. #2
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    salut,

    les balises [CODE][/CODE] permettent de délimiter tes oeuvres sur le forum

    je suis pas dev non plus, mais m'est avis qu'en awk on peut écrire un truc comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    awk '/^#/{next}{printf("%s %s %s\n",$2,$3,$4)}' fichier | while read GENDYV GENMOD GENDST; do
       ...
    done
    tandis qu'en python on peut faire un truc comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    import re
     
    with open(fichier, 'r') as f:
       for line in f:
          if not line.startswith('#'):
             _, GENDYV, GENMOD, GENDST, _ = re.split('\s+', line, 4)
             ...

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 5
    Par défaut
    Merci tout d'abord pour ta réponse rapide.

    Je viens d'ajouter les balises


    Ok utilisation de startswith pour le grep "^"
    et il faut que je joue avec le split.
    Mais là j'avoue que c'est encore un peu compliqué pour moi ton exemple. Je vais test pour voir ce que cela donne

  4. #4
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    le _ n'est rien d'autre qu'une variable temporaire, tu peux aussi bien remplacer par TOTO si ça te chante, re.split(,,4) retourne une liste de 5 éléments (4 séparations), on affecte le premier élément à n'importe quoi on s'en fout puisqu'on le conserve pas, les éléments 2, 3 et 4 sont affectés à nos variables, le dernier élément est affecté comme le premier, à un truc dont on se sert pas, c'est une affectation multiple.

    si c'est le reste qui pose problème, il te faut probablement faire un tour au préalable par n'importe quel tuto

Discussions similaires

  1. inserer des "array" en colonne dans un fichier texte
    Par pascaloupsu dans le forum Langage
    Réponses: 4
    Dernier message: 09/06/2017, 09h24
  2. Réponses: 2
    Dernier message: 12/11/2016, 20h24
  3. [Débutant] extraire un caractère d'une colonne dans un fichier texte
    Par 6iluvatar9 dans le forum MATLAB
    Réponses: 2
    Dernier message: 03/11/2010, 14h48
  4. Ecrire des vecteurs colonnes dans un fichier text
    Par Ballim dans le forum MATLAB
    Réponses: 6
    Dernier message: 14/11/2008, 09h08
  5. Séparateur de colonnes dans un fichier texte
    Par robert323 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 02/01/2008, 12h02

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