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 :

Retour ligne dans un csv [Python 3.X]


Sujet :

Python

  1. #1
    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 Retour ligne dans un csv
    Bonjour,
    J'ai un souci avec un fichier .csv :
    en effet, je télécharge un fichier xls que je convertis en csv avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    csv.writer(fh, delimiter=';', lineterminator='\n')
    et je l'ouvre ensuite avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    mon_fichier2 = open("toto.csv",encoding='latin1')
    liste1 = list(csv.reader((mon_fichier2),delimiter='\t',lineterminator='\n'))
    Mon problème est que le créateur du fichier .xls originel a fait pour moi une bêtise : dans une cellule, il a fait un saut de ligne.
    Du coup, mon traitement me renvoie une erreur (list index out of range), ce qui est normal.
    Il faudrait donc que je parvienne à remplacer ce saut de ligne par un espace par exemple. Une idée ?

    [Edit] Pour précision, utiliser le point-virgule ne change rien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    mon_fichier2 = open("toto.csv",encoding='latin1')
    liste1 = list(csv.reader((mon_fichier2),delimiter=';',lineterminator='\n'))

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 695
    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 695
    Par défaut
    Salut,

    Citation Envoyé par marco056 Voir le message
    Mon problème est que le créateur du fichier .xls originel a fait pour moi une bêtise : dans une cellule, il a fait un saut de ligne.
    Pourquoi ne pas supprimer cette ligne dans le fichier orignal? Et/ou vérifier que l'original est intègre avant de le convertir?
    De toutes façons, soit les données en entrées sont "correctes", soit vous ne savez pas trop ce que vous allez devoir faire pour corriger toutes les erreurs omissions possibles.

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

  3. #3
    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
    En fait, il y a un saut de ligne dans une cellule qui concerne une seule ligne sur 200.
    J'ai besoin des 200 lignes. D'où ma question.
    Pour l'instant, je fais la correction à la main.
    S'il y avait eu une solution simple à laquelle je n'ai pas pensé, cela aurait été mieux mais dans le cas contraire, je vais continuer de chercher...
    [edit] Je vais y parvenir à coup de replace.

  4. #4
    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
    Ok, c'est fait. Un peu tordu mais bon.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2020
    Messages : 6
    Par défaut faire un retour à la ligne dans un fichier csv
    Bonjour


    Quelqu'un peut m'aider pour faire un retour à la ligne d'une liste après chaque virgule dans un fichier csv

    Voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    l=['toto','titi','doctuer','ecole','université','salaire']
     with open('fichier.csv' 'w',newline='') as ffichier:
                        writer = csv.writer(ffichier, delimiter=';',lineterminator='\r\n')
                        writer.writerow(l)

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 31
    Par défaut
    Bonjour,
    Attention, il manquait une virgule sur la ligne 2 entre 'fichier.csv' et 'w'.
    Pour moi le code suivant fonctionne. (Python 3.8.6 sur windows10)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    l=['toto','titi','doctuer','ecole','université','salaire']
    with open('fichier.csv', 'w',newline='') as ffichier:
        writer = csv.writer(ffichier, delimiter=';',lineterminator='\r\n')
        writer.writerows([(i,) for i in l])
    La modification est de passer par writerows qui crée des lignes à chaque tuple d'une liste. Il suffit donc de modifier chaque élément de la liste en tuple au moyen d'une list comprehension.

    A bientôt

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2020
    Messages : 6
    Par défaut Pour télécharger une image dans un site et mettre dans un dossier
    Je veux télécharger des images d'un site pour web en python et mettre dans un répertoire mais ça affiche une erreur sur urllib.request.urlretrieve(m, name) votre aide svp
    voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    from bs4 import BeautifulSoup
    import requests
    import urllib.request
     
     
    homepage = "https://www.bing.com/images/"
        reponse=requests.get(homepage)
        soup=BeautifulSoup(reponse.content.decode("utf-8", "ignore"),features="html.parser")
        image=soup.find_all('img')
        for mg in image:
            y=mg['src']
            name=mg['alt']
             urllib.request.urlretrieve(m, name)

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

Discussions similaires

  1. VBA : Retour ligne dans une requête
    Par Maryy dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/06/2010, 08h52
  2. retour ligne dans mail sous lotus
    Par fomy dans le forum VBA Access
    Réponses: 1
    Dernier message: 09/07/2008, 15h19
  3. Retour ligne dans une date
    Par Sofute dans le forum Requêtes
    Réponses: 2
    Dernier message: 11/12/2007, 14h06
  4. [CSV] Saut de ligne dans un csv
    Par ThE BiShOp* dans le forum Langage
    Réponses: 4
    Dernier message: 06/12/2007, 14h21
  5. Réponses: 9
    Dernier message: 21/02/2007, 13h20

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