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 :

Probleme avec xlwt [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Femme Profil pro
    Particulier
    Inscrit en
    Septembre 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Particulier

    Informations forums :
    Inscription : Septembre 2021
    Messages : 3
    Par défaut Probleme avec xlwt
    Bonjour, je suis debutant en python et j'ai voulu créer un programme pour avoir les prix directement dans une feuille calc (open office).
    fonctionnement du programme:
    je met les adresses url dans un fichier texte puis quand je lance le programme il lis le .txt avec les liens ensuite il va me chercher tous les prix sur les pages avec le vendeur et la quantité et les exportes dans un .ods mais certains fichier sont sans extension et font une taille de 0 alors que les autre sont belle est bien en .ods et avec toutes les données que je voulais.
    Ma question est pourquoi certains ne s'enregistre pas et d'autre oui alors que le code est le même pour tous les liens

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
            for c in range(len(price)):
                save_data(title, name[c], price[c], quantite[c])
    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
     
    def save_data(title, name, price, quantite):
        wb = xlwt.Workbook()
        ws = wb.add_sheet("page 1")
        row = 2
        ws.write(0, 0, title)
        ws.write(1, 0, "Vendeur")
        ws.write(1, 1, "Prix")
        ws.write(1, 2, "Quantité")
        for c in range(len(name)):
            ws.write(row, 0, name)
            ws.write(row, 1, price)
            ws.write(row, 2, quantite)
            row += 1
        ws.col(0).width = 256 * max([len(row) for row in name])
        wb.save("calc\\" + title[0] + ".ods")
    voici les données que je récupère quand je lance le programme:
    Premiere donnée title (Soldat Dragon...)
    Deuxieme données name (Teenz...)
    Troisieme données price (53)
    Quatrieme données quantite (1)
    Chacun stocker dans une variable liste (la j'ai fais un print ou j'ai tout coller sinon c'est bien separé)
    Pour le Soldat Dragon pas de problème il est bien exporter en .ods mais pour la Magicienne ça ne fonctionne pas (sans extension et quand je met l'extension en .ods ça ne fonctionne pas)
    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
     
    ['Soldat Dragon Sombre aux Yeux Rouges2020 Tin of Lost Memories Mega Pack - Red-Eyes Dark Dragoon - Cartes']
     Teezumbee-1985     53.0    1
     LiroGami   53.49   1
     Kosarkas55     55.0    1
     xXLeBronXx     56.0    1
     Madridcards    56.99   1
     ChihirosKartenwelt 57.0 1
     RealLuka 57.0 1
     
    ['Magicienne des Ténèbres ToonLegendary Duelists: Season 1 - Toon Dark Magician Girl - Cartes']
     OldSchool-Collector 0.05 1
     Zemoca 0.05 1
     Bacegamie 0.05 1
     Anokata1412 0.05 1
     Khomete 0.05 2
     luckylabesque 0.05 1
     TrHz9 0.05 1
     seb-yugi91 0.08 1
    Si quelqu'un peut m'éclairer
    Merci

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 833
    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 833
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par AkaiHoshi Voir le message
    Si quelqu'un peut m'éclairer
    Et pourquoi tu ne t'éclaires pas tout seul en mettant du print() un peu partout pour vérifier que tout ce qui doit être l'est bel et bien?

    Citation Envoyé par AkaiHoshi Voir le message
    Ma question est pourquoi certains ne s'enregistre pas et d'autre oui alors que le code est le même pour tous les liens
    Deux hypothèses
    • dans certains cas len(price) vaut 0 donc tu n'entres pas dans la boucle donc tu n'appelles pas save_data()
    • certains textes sont plus spéciaux que d'autres ce qui fait planter la chaine "calc\\" + title[0] + ".ods". A ce propos tu devrais utiliser os.path.join("calc", "%s.ods" % title[0])


    Citation Envoyé par AkaiHoshi Voir le message
    voici les données que je récupère quand je lance le programme...
    Pour le Soldat Dragon pas de problème il est bien exporter en .ods mais pour la Magicienne ça ne fonctionne pas (sans extension et quand je met l'extension en .ods ça ne fonctionne pas)
    Change ton texte pour la magicienne et supprime les accents. A ce propos quel est l'encoding du fichier? Est-ce que tu récupères bien dans le bon encoding?
    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
    Candidat au Club
    Femme Profil pro
    Particulier
    Inscrit en
    Septembre 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Particulier

    Informations forums :
    Inscription : Septembre 2021
    Messages : 3
    Par défaut
    Bonjour

    Et pourquoi tu ne t'éclaires pas tout seul en mettant du print() un peu partout pour vérifier que tout ce qui doit être l'est bel et bien?
    J'ai déjà mis des print un peut partout ou cela pouvais mal ce passer mais rien.

    Deux hypothèses
    dans certains cas len(price) vaut 0 donc tu n'entres pas dans la boucle donc tu n'appelles pas save_data()
    certains textes sont plus spéciaux que d'autres ce qui fait planter la chaine "calc\\" + title[0] + ".ods". A ce propos tu devrais utiliser os.path.join("calc", "%s.ods" % title[0])
    le len(price)/len(name)/len(quantite) son bel et bien de la meme longueur. (J'ai vérifier dans la boucle for c in range(len(name)): avec un print(name[c], price[c], quantite[c] et toutes les données son bien présente
    Pour ce qui est des caracters speciaux je ne pense pas:

    • Booster de Toon ChaosToon Chaos Booster - Boosters.ods
    • Magicienne des Ténèbres ToonLegendary Duelists
    • Monde des ToonsToon Chaos - Toon World - Cartes.ods
    • Revolver Dragon ToonLegendary Duelists
    • Soldat Canon ToonLegendary Duelists
    • Soldat Dragon Sombre aux Yeux Rouges2020 Tin of Lost Memories Mega Pack - Red-Eyes Dark Dragoon - Cartes.ods
    • Soldat du Lustre Noir - Emissaire du CommencementCollector's Tins 2013 - Black Luster Soldier - Envoy of the Beginning - Cartes.ods
    • Soldat du Lustre Noir Toon (V.1 - Ultra Rare)Toon Chaos - Toon Black Luster Soldier (V.1 - Ultra Rare) - Cartes.ods
    • Soldat Solide, HÉROS ÉlémentaireToon Chaos - Elemental HERO Solid Soldier - Cartes.ods
    • Terreur ToonToon Chaos - Toon Terror - Cartes.ods


    J'ai fais quelque teste sur d'autre page et voila le resultat (les .ods et les sans .ods) certains n'on pas de caractère spéciaux

    Change ton texte pour la magicienne et supprime les accents. A ce propos quel est l'encoding du fichier? Est-ce que tu récupères bien dans le bon encoding?
    Oui c'est le bon encoding:

    1. # -*- coding: <utf-8> -*-
    2. wb = xlwt.Workbook(encoding="utf-8")

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Citation Envoyé par AkaiHoshi Voir le message
    (J'ai vérifier dans la boucle for c in range(len(name)): avec un print(name[c], price[c], quantite[c] et toutes les données son bien présente
    Dans la boucle, on a:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        for c in range(len(name)):
            ws.write(row, 0, name)
            ws.write(row, 1, price)
            ws.write(row, 2, quantite)
            row += 1
    A chaque itération, on essaie d'écrire toutes les listes au lieu du cième élément.
    Soit ça plante, soit ça fait n'importe quoi mais ça devrait se voir.

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

  5. #5
    Candidat au Club
    Femme Profil pro
    Particulier
    Inscrit en
    Septembre 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Particulier

    Informations forums :
    Inscription : Septembre 2021
    Messages : 3
    Par défaut
    Non non c'est bien le Xiéme élément qui est écrit (j'ai réécrit le code en l'oubliant).
    Oui ça fait n'importe quoi quand y a le ws.write() ou quand il save le .ods parce que j'ai mis des print() PARTOUT et chaque donnée était bien présente et comme elle devait l'être.


    Mais j'ai refais un programme plus complexe et qui fonctionne encore mieux que celui que j'avais créé précédemment.

    je lui donne une liste de lien d'utilisateur (sur le site) et il va chercher lui même la liste de carte que je lui est écrite et si il la trouve il récupère le nom de le carte / prix / rareté / langue / quantité disponible sinon il me met juste le nom de la carte et rien d'autre pour dire qu'il ne l'a pas trouvée puis ensuite il m'enregistre le tout dans un .ods toutes les données qu'il a récupéré

    3 utilisateurs qui a eux 3 rassembles 620k de cartes, taper dans un le nom de la carte voir s'il la possède puis l'autre puis l'autre et regarder les prix puis regarder la carte suivante etc... ça me prenais facilement 3 4h minimum pour voir le plus rentable maintenant mon programme me le fait en 4min !!!

    Merci quand même d'avoir essayer de m'aider !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Python 3.X] probleme avec open()
    Par stephe69 dans le forum Général Python
    Réponses: 4
    Dernier message: 02/05/2017, 14h26
  2. probleme avec open dialogue?
    Par nassimanocus dans le forum Débuter
    Réponses: 16
    Dernier message: 29/12/2013, 11h34
  3. Probleme avec Open File
    Par Antoinejdu44 dans le forum Windows Forms
    Réponses: 21
    Dernier message: 24/05/2009, 13h43
  4. [vb6]=Probleme avec open for append
    Par prison_break dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 02/01/2007, 13h40
  5. [xmlhttprequest] probleme avec open
    Par gorgonite dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 30/05/2006, 21h04

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