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 :

Générer un fichier CSV à partir d'une liste


Sujet :

Python

  1. #1
    Modérateur
    Avatar de blueice
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2003
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 487
    Points : 5 134
    Points
    5 134
    Par défaut Générer un fichier CSV à partir d'une liste
    Je débute en Python et j'ai du mal avec l'export de données dans un fichier CSV.
    J'utilise BeautifulSoup pour parser un document HTML, jusque là aucun problème.
    J'ai donc une liste de toutes les occurences recherchées dans le doc HTML de la forme (id, categorie, nom, adresse, tel, url, id, categorie, nom, adresse, tel, url, id, categorie, nom, adresse, tel, url,....)
    Comment je peux fractionner cette liste pour remplir mon fichier CSV correctement ? Ou comment m'y prendre autrement pour y arriver ?

    Voilà ce que j'ai fait :
    Code python : 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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # coding: utf-8
    import requests
    import csv
    from bs4 import BeautifulSoup
    from unicodedata import normalize
     
     
    url = "http://www.monsite.com/mapage.html"
    r = requests.get(url)
     
    soup = BeautifulSoup(r.content)
     
    g_data  = soup.find_all("li", {"class": "business"})
     
    mylist = []
     
    for item in g_data:
        try:
            mylist.append( item.find_all("span", {"class": "id"})[0].string)
        except:
            pass
        try:
            mylist.append(normalize('NFKD',item.find_all("div", {"class": "categorie"})[0].li.string).encode('ascii', 'ignore'))
        except:
            pass
        try:
            mylist.append(normalize('NFKD',item.find_all("a", {"class": "nom"})[0].span.text).encode('ascii', 'ignore'))
        except:
            pass
        try:
            mylist.append(normalize('NFKD',item.find_all("div", {"class": "adresse"})[0].p.text).encode('ascii', 'ignore'))
        except:
            pass
        try:
            mylist.append( item.find_all("ul", {"class": "telephone"})[-1].strong.text)
        except:
            pass
        try:
            mylist.append( item.find_all("a", {"class": "url"})[0].text)
        except:
            pass
    -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_SIGNATURE -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
    Dans la mesure du possible, essayez de montrer votre problème en situation réelle en nous donnant une url, que l'on puisse tester.
    Pensez également à cocher

    Aucun problème ne doit être résolu en MP (Message Privé) le forum est là pour ça.

    Dimension Internet

  2. #2
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 804
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 804
    Points : 7 080
    Points
    7 080
    Par défaut
    En admettant que j'ai pas vu le code

    Un fichier csv c'est des lignes dans un fichier texte dont les mots sont séparés par des espaces ou des points virgules...

    Imaginons une liste, du style ["bonjour", "salut", "coucou"] et que je veuille créer une ligne 'bonjour;salut;coucou'

    On va utiliser la méthode join de la classe str

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> s = ["bonjour", "salut", "coucou"]
    >>> ';'.join(s)
    'bonjour;salut;coucou'
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

Discussions similaires

  1. Réponses: 5
    Dernier message: 01/09/2015, 13h16
  2. [FPDF] Générer deux fichiers PDF à partir d'une classe
    Par doreen07 dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 31/10/2007, 11h17
  3. Réponses: 1
    Dernier message: 02/04/2007, 11h23
  4. [.NET]réécriture d'un fichier a partir d'une list box
    Par scorpking dans le forum VC++ .NET
    Réponses: 14
    Dernier message: 24/04/2006, 14h16
  5. Réponses: 4
    Dernier message: 02/05/2005, 20h25

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