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

  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 845
    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 845
    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 845
    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 845
    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 571
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 571
    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 ?

  7. #7
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 845
    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 845
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par umfred Voir le message
    Je me risque au hors sujet:
    Vas-y, une info ne peut pas nuire.

    Citation Envoyé par umfred Voir le message
    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 ?
    Héhé, malheureusement non. Les éléments sont de taille variable (cf son premier post "le nombre d'éléments varie")... ce que j'ai reproduit dans mon premier exemple.
    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]

  8. #8
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 571
    Par défaut
    En fait je ne vois pas trop le problème avec ma "méthode", à la transposition, les lignes deviennent colonnes et inversement a priori; dans mon cas, on se moque du contenu (alors certes le type sera tout en bas au lieu de tout en haut)
    Après, je me doutais que ce n'était pas exactement le résultat demandé, mais un truc approchant, au cas où.

  9. #9
    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
    En fait c'est le code copié/collé qui fonctionnait et avait des espaces au lieu de la tabulation, Pas les 2 autres lignes pour [ et '

    Bon, après dans les 2 cas ça fonctionne uniquement avec \ mais pas avec les 2 autres. Je vais voir, toutes les idées sont bonnes à prendre donc merci Umfred.

  10. #10
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 845
    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 845
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par umfred Voir le message
    En fait je ne vois pas trop le problème avec ma "méthode", à la transposition, les lignes deviennent colonnes et inversement a priori; dans mon cas, on se moque du contenu (alors certes le type sera tout en bas au lieu de tout en haut)
    Compris (j'avais pas remarqué le "avec transposition" et en plus je ne savais pas ce que ça faisait et j'ai d'ailleurs mis du temps à le trouver).
    Je viens de tester avec mon exemple. Effectivement de 2 lignes de n colones je passe à 2 colonnes de n lignes. Ensuite on peut prendre chaque colonne et l'afficher comme on le souhaite.
    OK bien vu (mais c'est pas un traitement automatisé)
    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]

  11. #11
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 571
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    (mais c'est pas un traitement automatisé)[/SIZE]
    ça pourrais se faire dans le vba d'un excel si on veut
    Après ça dépend de l'utilisation finale des données.

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

    Les données vont aller peupler une autre base de données, d'où la nécessité de les formater. J'y suis parvenu mais c'est une liste de toutes les données que je découpe ensuite. Heureusement que c'est une toute petite partie des données car je pense qu'avec la base entière risque de poser soucis. J'aurais préféré une liste par ligne mais pour le moment je cherche encore comment faire.

  13. #13
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 845
    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 845
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Freyrlin Voir le message
    J'aurais préféré une liste par ligne mais pour le moment je cherche encore comment faire.
    cet exemple travaille avec une liste par ligne !!!
    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]

  14. #14
    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
    Puisque tu n'es pas capable de te mettre à mon niveau de grand débutant je vais demander ailleurs. Désolé d'avoir dérangé votre seigneurie.

  15. #15
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 845
    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 845
    Billets dans le blog
    1
    Par défaut
    Ben sais pas qu'est-ce qu'il te faut !!! Je t'ai donné un exemple avec un fichier contenant deux lignes (fais un effort si tu en es capable et tu le verras, il se nomme "fic"), et un code qui les lit et les affiche. Tu veux quoi de plus ??? Que je vienne les taper à ta place ??????
    Etre débutant n'est pas une tare... mais se réfugier derrière cet adjectif pour s'éviter d'avoir à s'assumer ça c'en est une.
    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]

  16. #16
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    Il est fort, ce garçon !!!
    Et sacrément gonflé.

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