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 :

Conversion d'une base de données


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2018
    Messages : 12
    Par défaut Conversion d'une base de données
    Bonjour,

    Je désire convertir une petite base de données et j'ai donc exporté ses données dans un csv. Ce csv est de forme suivante:

    Nom de l'objet ; élément 1, élément 2 ... , élément n ; type d'objet ( remarquez que les champs sont séparés par des points virgules et les éléments par des virgules )

    Je souhaiterais avoir les données sous la forme suivante;

    Intitulé ( en fonction du type d'objet )
    élément 1
    élément 2
    ...
    élément n
    Fin de la description de l'objet


    Mon plus gros problème ( en dehors du fait que je suis une bille en python) est que le nombre d'éléments varie ( boucle dans une boucle ? )
    Vaut-il mieux faire des chaînes ou des dictionnaires dans mon script?

    J'en suis au tout début et j'aimerais juste avoir des pistes pour aborder ce script qui me parait bien complexe.

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    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 832
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par Freyrlin Voir le message
    Nom de l'objet ; élément 1, élément 2 ... , élément n ; type d'objet ( remarquez que les champs sont séparés par des points virgules et les éléments par des virgules )

    Je souhaiterais avoir les données sous la forme suivante;

    Intitulé ( en fonction du type d'objet )
    élément 1
    élément 2
    ...
    élément n
    Fin de la description de l'objet
    https://docs.python.org/fr/3/library/csv.html pour lire la ligne, et ensuite quand tu as pu isoler chaque info (ce qu'on appelle "colonne") tu peux alors les réafficher comme tu en as envie.

    Citation Envoyé par Freyrlin Voir le message
    Mon plus gros problème ( boucle dans une boucle ? )
    Oui boucle dans une boucle c'est le principe de départ. Mais déjà le module csv ayant fait le job de pouvoir isoler chaque colonne, tu as déjà une boucle dont tu n'as pas à t'occuper.
    Au final tu te retrouves avec une colonne contenant "élément 1, élément 2 ... , élément n" et là tu n'as qu'à la splitter sur la virgule pour récupérer tes éléments individuels.

    Exemple
    Fichier "fic"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Nom A ; élément 1, élément 2, élément 3 ; type d'objet
    Nom B ; élément 1, élément 2, élément 3, element 4 ; type d'objet
    Code de lecture
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    import csv
    with open("fic", "r") as fp:
    	for row in csv.reader(fp, delimiter=';'):
    		print(row, type(row))
    Comme tu le vois, chaque "row" est une liste. Et les éléments sont dans row[1]. De là ça devient peanut.

    Citation Envoyé par Freyrlin Voir le message
    Vaut-il mieux faire des chaînes ou des dictionnaires dans mon script?
    Vaut mieux rien. On n'utilise pas un outil pour le fun. On a des outils, on sait ce qu'ils font donc quand on a besoin de leurs caractéristiques et possibilités là on les met à contribution.
    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]

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2018
    Messages : 12
    Par défaut
    Merci, c'est bien plus clair maintenant.

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2018
    Messages : 12
    Par défaut
    Hello,

    Ça avance, j'ai maintenant un fichier qui contient les données, mais aussi des caractères dont je ne veux pas. Il s'agit de [, ' et \n
    Pour \n j'ai trouvé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fichier3.write(line.replace('\\n'), ''))
    Je pensais que pour [ et ' ce serait aussi facile mais non:
    TabError: inconsistant use of tabs and spaces in identation
    J'ai essayé de jouer avec les \ et les parenthèses mais sans succès.

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    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 832
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Freyrlin Voir le message
    TabError: inconsistant use of tabs and spaces in identation.
    J'ai essayé de jouer avec les \ et les parenthèses mais sans succès.
    Ce n'est pas un souci de caractère, mais un souci de copier/coller. Tu aurais cherché le message d'erreur sur le net tu aurais eu immédiatement l'explication.
    Tu as dû probablement récupérer un code source quelconque sur le net et tu l'as copié dans ton code.
    Sauf que le code copié n'est pas le même que le tien (tu dois utiliser des espaces pour distinguer les blocs tandis que le code copié utilise des tabulations, ou l'inverse).
    Et le mélange espace/tabulations n'est plus possible sous Python3.
    Python, c'est comme le reste, ça s'apprend...
    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 Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 540
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 540
    Par défaut
    Je me risque au hors sujet:
    Si tu remplaces les virgules par des points-virgules, puis que tu ouvres ton csv avec Excel, tu sélectionnes tes colonnes, et tu fais un copier/coller avec transposition, est-ce que ça s'approche du résultat voulu ?

Discussions similaires

  1. [AC-2010] Conversion d'une base de données web
    Par Savak dans le forum Access
    Réponses: 8
    Dernier message: 30/08/2012, 11h31
  2. conversion d'une base de donnée Access vers Sql server
    Par elgaied dans le forum Modélisation
    Réponses: 6
    Dernier message: 22/01/2010, 12h26
  3. Réponses: 1
    Dernier message: 17/12/2007, 12h08
  4. [Concept] Stabilité d'une base de donnée
    Par lassmust dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 03/07/2002, 16h16
  5. associer une base de données(access) a un dbgrid
    Par ange1708 dans le forum MFC
    Réponses: 3
    Dernier message: 11/06/2002, 12h18

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