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

Bibliothèques tierces Python Discussion :

Intégration d'un contenu texte comme ligne de commande


Sujet :

Bibliothèques tierces Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2020
    Messages : 4
    Par défaut Intégration d'un contenu texte comme ligne de commande
    Bonjour

    Dans le cadre de l'étude d'un document CSV je dois récupérer les données de chaque colonne et les associer à des listes afin de traiter les données.
    Je souhaiterai les associer à des listes pour les retrouver plus facilement (j'ai environ 400 colonnes).

    A l'aide d'un fichier .txt propre à un set de données, j'arrive à créer la nomenclature de chaque liste avec le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
             if b=="r\n":
                marker_list.append(str(a)+"rx=[]")
                marker_list.append(str(a)+"ry=[]")
                marker_list.append(str(a)+"rz=[]")
                marker_list.append(str(a)+"rw=[]")
                n+=4
            if b=="p\n" or b=="p":
                marker_list.append(str(a)+"px=[]")
                marker_list.append(str(a)+"py=[]")
                marker_list.append(str(a)+"pz=[]")
                n+=3
     
    print(*marker_list, sep="\n")
    Plutôt que de copier manuellement le "print" dans mon autre programme je souhaiterai le rendre directement utilisable sous forme de lignes de code.

    Plus concrètement :

    Avec mon programme j'obtiens un print de cette forme :
    hip1rx=[]
    hip1ry=[]
    hip1rz=[]

    Je souhaiterai "transformer" ces données textuelles en ligne de code de manière automatique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    #Utilisation du print pour ouvrir de nouvelles listes
    hip1rx=[]
    hip1ry=[]
    hip1rz=[]
    Si toute mon histoire de CSV n'est pas claire, simplement je souhaiterai intégrer des données textuelles comme lignes de code (tirée d'une fonction par exemple et les intégrer au script actuel).

    Je reste à votre disposition si cela manque de clarté,
    Merci d'avance.

    Azmry

  2. #2
    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,

    Citation Envoyé par Azmry Voir le message
    Je reste à votre disposition si cela manque de clarté
    Avant de partir à vouloir traiter un fichier CSV de 400 colonnes et je ne sais combien de lignes, partez d'un exemple à 2 lignes, 2 colonnes. Ça vous permettra de mieux visualiser ce que vous cherchez à faire et d'être un peu plus clair sur ce que vous cherchez à obtenir.

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

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2020
    Messages : 4
    Par défaut
    En fait mon problème est le même pour un .csv de 2 et 400 colonnes.

    Pour résumer :

    - J'ai un système de nomenclature qui me permet d'obtenir mes noms de liste en référence à une colonne donnée.

    - Ces données sont textuelles et sous cette forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "marker_data.append(+str(a)+"rx.append(value["+str(n)+"])")
    où :
    marker_data, correspond à ma liste regroupant mes noms de liste
    str(a) le nom de l'objet de la colonne concernée
    value[str(n)] à la colonne concernée

    - Je cherche à intégrer ces données textuelles à un autre programme (ici ligne 17-18):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    datafile = open("a.csv","r")
     
    hip1rx=[]
    hip1px=[]
     
    i=0
    n=0
     
    #Pour chaque ligne attribution des valeurs à chaque liste
    while True:
        line=datafile.readline()
        if line=="":
            break
        value=line.split(";")
        i+=1
        if i>7:
            hip1rx.append(value[2])
            hip1px.append(value[3])
            n+=1
     
    print(*hip1rx, sep="\n")
    Je ne sais pas si c'est plus clair ?

    Merci d'avance

    Azmry

  4. #4
    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,

    Citation Envoyé par Azmry Voir le message
    Je ne sais pas si c'est plus clair ?
    Pour moi non: où vous racontez des choses pertinentes pour ce que vous faites mais inutiles pour décrire ce que vous voulez extraire du fichier CSV (pour récupérer la 3ème et la 4ème colonne d'un fichier CSV, pas besoin de savoir ce qu'elles contiennent), soit ce sont des informations pertinentes mais je ne comprends pas comment elles doivent être intégrées.

    J'espère que votre prose inspirera d'autres lecteurs du forum.

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

  5. #5
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    J'avoue que je ne comprends pas non plus la question.

    C'est un fichier csv: il faut donc utiliser le module csv pour le lire. La doc de ce module est ici:
    https://docs.python.org/3/library/csv.html#module-csv

    Exemple:

    On a un fichier csv qui contient:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    "AX";"AX01C";1;"C";"light1";10;8.01;9;0;27;1015
    "AX";"AX02C";2;"C";"light2";10;8.05;9;0;27;1015
    "AX";"AX03C";3;"C";"light3";12;9.89;11;0;32;753
    "AX";"AX04C";4;"C";"light4";11;10.78;10;0;31;841
    On le lit avec le petit code suivant (extrait de cette doc):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    import csv
    with open('fichier.csv', newline='') as csvfile:
        spamreader = csv.reader(csvfile, delimiter=';')
        for row in spamreader:
            print(row)
    Ce qui affiche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ['AX', 'AX01C', '1', 'C', 'light1', '10', '8.01', '9', '0', '27', '1015']
    ['AX', 'AX02C', '2', 'C', 'light2', '10', '8.05', '9', '0', '27', '1015']
    ['AX', 'AX03C', '3', 'C', 'light3', '12', '9.89', '11', '0', '32', '753']
    ['AX', 'AX04C', '4', 'C', 'light4', '11', '10.78', '10', '0', '31', '841']
    On voit qu'on obtient une liste par ligne du fichier csv.

    Après, ce n'est que de la manipulation de données (extraction, concaténation, conversion, etc...). Par exemple, l'item qui se trouve en 5ème position (index=4 puisque les index commencent à 0) de la 1ère liste sera extrait par: item=listeligne[4], ce qui donnera "light1".

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2020
    Messages : 4
    Par défaut
    Bonjour,

    Désolé pour le manque de clarté, à la base je ne voulais pas rentrer dans les détails pour vous éviter mes explications alambiquées. Je vais essayer de formuler autrement mon problème et avec plus de précision.

    Ce n'est pas l'ouverture du .csv ni la récupération des informations ligne par ligne pour une colonne donnée qui me pose problème, j'ai déjà pu régler cela.

    En fait, édité sous excel mon document a cette forme (j'ai converti les données sous forme de tableau pour que ce soit plus lisible) :
    Nom : tab.PNG
Affichages : 123
Taille : 33,0 Ko

    Cela représente l'évolution de la rotation et position dans le temps de différents capteurs. La finalité du programme serait de calculer l'angle entre 3 capteurs à un instant donné.
    En prenant un peu de temps je pourrais identifier les colonnes qui m'intéressent et faire les calculs en utilisant le "item=listeligne[4]" de la précédente réponse. J'ai déjà réalisé le programme me permettant de récupérer les informations et les traiter de cette façon et cela fonctionne.

    Le soucis c'est que chaque colonne n'est pas forcément au même endroit d'un fichier à l'autre, ce qui m'obligerait à rechercher une nouvelle fois chaque "numéro de colonne" pour un deuxième fichier et ce que je souhaite c'est pouvoir traiter un nombre important de fichier de façon plus automatique.

    J'en arrive au sujet de cette discussion. J'ai créé un programme qui me permet de créer des listes personnalisées associées aux données de leur colonne respective (par exemple hip1px.append(value[7]) ). Du coup, si j'ai besoin des données du capteur "Anthony:Hip" en déplacement sur l'axe x, cela me permettrait de directement utiliser ma liste "hip1px" sans rechercher le numéro de colonne.

    Le but est donc de rédiger automatiquement les noms clés de ces listes personnalisées en référence à leur colonne pour les intégrer à mon programme. Le programme me définissant ces listes me donne cette cellule de sortie :
    Nom : list.png
Affichages : 125
Taille : 30,1 Ko

    Ma question était donc de savoir si il était possible d'intégrer ces listes prédéfinies textuellement à mon code de la façon suivante (en vert) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    datafile = open("a.csv","r")
    
    hip1rx=[]
    hip1px=[]
    
    i=0
    n=0
    
    #Pour chaque ligne attribution des valeurs à chaque liste
    while True:
        line=datafile.readline()
        if line=="":
            break
        value=line.split(";")
        i+=1
        if i>7:
            hip1rx.append(value[2])
            hip1px.append(value[3])
            ..........
            n+=1
            
    print(*hip1rx, sep="\n")

    J'espère que cette explication sera plus compréhensible, en vous remerciant d'avoir pris le temps de tout lire

    Azmry

Discussions similaires

  1. [c] texte en ligne de commande
    Par zOoOm_10 dans le forum C
    Réponses: 14
    Dernier message: 19/03/2011, 01h44
  2. Effacer le contenu de la ligne de commande
    Par laurentze dans le forum Shell et commandes GNU
    Réponses: 0
    Dernier message: 02/06/2010, 18h56
  3. Supprimer le contenu texte d'une ligne copiée
    Par nice dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 27/09/2007, 20h24
  4. Lire le contenu d'un document texte en ligne en connaissant l'URL
    Par Asdorve dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 01/03/2007, 14h42
  5. [Fichier texte] lire le contenu de certaines lignes
    Par crapouye dans le forum Access
    Réponses: 4
    Dernier message: 08/12/2005, 10h24

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