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 :

CSV Saut de ligne et indice [Python 3.X]


Sujet :

Python

  1. #1
    Membre Expert

    Homme Profil pro
    Ing�nieur R�seaux
    Inscrit en
    Juin 2012
    Messages
    877
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 33
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Ing�nieur R�seaux
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2012
    Messages : 877
    Par d�faut CSV Saut de ligne et indice
    Bonjour Le Forum,

    J'utilise le module csv de Python pour �crire dans un csv.

    Je bloque sur le fait de sauter une ligne et d'�crire un indice.

    Je trouve le f.write("\n") pas foufou. Un moyen de le faire avec le writer ?
    Je voudrais rajouter un integer incr�ment� devant le writerow mais writerow n'accepte qu'un seul argument.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    def to_file(filename, list):
    	with open(filename,'w', newline='') as f:
    		writer = csv.writer(f, delimiter=',')
    		for i in range(len(list)):	
    			writer.writerow(list[i]["sender"])
    			writer.writerow(list[i]["receiver"])
    			f.write("\n")
    Actuellement :
    Cible :
    Merci de votre aide.

  2. #2
    Membre Expert

    Homme Profil pro
    Ing�nieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Ing�nieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Par d�faut
    Bonjour

    Qu'est ce qui t'empeche d'�crire au lieu de

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    writer.writerow(list[i]["sender"])
    cela :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    writer.writerow( str(increment)+','+list[i]["sender"])
    ?

  3. #3
    Membre Expert

    Homme Profil pro
    Ing�nieur R�seaux
    Inscrit en
    Juin 2012
    Messages
    877
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 33
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Ing�nieur R�seaux
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2012
    Messages : 877
    Par d�faut
    Bonjour,

    Citation Envoy� par lg_53 Voir le message
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    writer.writerow( str(increment)+','+list[i]["sender"])
    Parce que j'ai un message d'erreur :
    writer.writerow(str(i)+','+list[i]["sender"])
    TypeError: Can't convert 'list' object to str implicitly

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

    Citation Envoy� par Miistik Voir le message
    Je voudrais rajouter un integer incr�ment� devant le writerow mais writerow n'accepte qu'un seul argument.
    Certes mais cet argument est une liste o� chaque item correspondra au contenu de la colonne de la ligne qui sera �crite dans le fichier CSV. .writerow convertira chacun des items en lui appliquant un simple str si le "dialect" ne demande pas autre chose puis construira la cha�ne de caract�res avec d�limiteur et fin de ligne qui vont bien.
    Donc:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    	for i in range(len(list)):	
    			writer.writerow([i, list[i]["sender"], list[i]["receiver"]])
    devrait suffire.
    note: pas besoin d'utiliser le module CSV pour �crire une information par ligne.

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

  5. #5
    Membre Expert

    Homme Profil pro
    Ing�nieur R�seaux
    Inscrit en
    Juin 2012
    Messages
    877
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 33
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Ing�nieur R�seaux
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2012
    Messages : 877
    Par d�faut
    Bonjour,

    Merci pour la r�ponse.

    J'obtiens ceci :
    Avec ce code :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    def to_file(filename, list):
    	indice = 0
    	with open(filename,'w', newline='') as f:
    		writer = csv.writer(f, delimiter=',')
    		for i in range(len(list)):	
    			indice = indice + 1 
    			writer.writerow([i, list[i]["sender"]])
    			writer.writerow([i, list[i]["receiver"]])
    			f.write("\n")
    En fait, ma liste en param�tre de la proc�dure to_file est une liste de dictionnaire de listes de la forme :
    - {"sender": [values], "receiver": [values]}
    J'ai donc des cas unitaires comme l'indice 1 et des cas plus complexes comme l'indice 2.

    Pourquoi, j'ai encore des crochets avec des apostrophes comme un affichage python CLI ?

  6. #6
    Expert �minent
    Homme Profil pro
    Architecte technique retrait�
    Inscrit en
    Juin 2008
    Messages
    21 776
    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 776
    Par d�faut
    Citation Envoy� par Miistik Voir le message
    Pourquoi, j'ai encore des crochets avec des apostrophes comme un affichage python CLI ?
    Parce que .writerow applique str au diff�rents items de la liste qu'il re�oit en argument...
    Et si vous lui passer une liste ou le 2nd �l�ment est une liste, alors str(...) lui met des crochets autour. La question devient alors comment fabriquer une nouvelle liste avec le num�ro de ligne en premier �l�ment et cette liste l�.
    Et c�t� r�ponse, faire un tour dans votre tuto pr�f�r� pour r�viser ce que sont les listes et comment s'en servir vous sera bien plus b�n�fique que juste recopier un truc que vous n'avez pas pris le temps de comprendre.

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

  7. #7
    Membre Expert

    Homme Profil pro
    Ing�nieur R�seaux
    Inscrit en
    Juin 2012
    Messages
    877
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 33
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Ing�nieur R�seaux
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2012
    Messages : 877
    Par d�faut
    Bonjour,

    Bon, j'ai obtenu ce que je souhaite.

    La m�thode est pas forc�ment optimale.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    def to_file(filename, list):
    	indice = 0
    	with open(filename,'w', newline='') as f:
    		writer = csv.writer(f, delimiter=';')
    		f.write("Liste Blanche AntiSpam"+"\n")
    		for i in range(len(list)):	
    			indice = indice + 1
    			list[i]["sender"].append(indice)
    			list[i]["receiver"].append(indice)
    			list[i]["sender"].reverse()
    			list[i]["receiver"].reverse()
    			writer.writerow(list[i]["sender"])
    			writer.writerow(list[i]["receiver"])
    Merci pour votre aide

  8. #8
    Expert �minent
    Homme Profil pro
    Architecte technique retrait�
    Inscrit en
    Juin 2008
    Messages
    21 776
    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 776
    Par d�faut
    Citation Envoy� par Miistik Voir le message
    La m�thode est pas forc�ment optimale.
    Bah, �� a le m�rite de fonctionner.
    Mais concat�ner 2 listes et aussi simple que concat�ner 2 cha�nes de caract�res:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    >>> L = ['a', 'b']
    >>> index = 1
    >>> [ index ] + L
    [1, 'a', 'b']
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  9. #9
    Membre Expert

    Homme Profil pro
    Ing�nieur R�seaux
    Inscrit en
    Juin 2012
    Messages
    877
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 33
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Ing�nieur R�seaux
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2012
    Messages : 877
    Par d�faut
    Bonjour,

    Merci !!

    C'est plus simple et plus lisible.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    def to_file(filename, list):
    	indice = 0
    	with open(filename,'w', newline='') as f:
    		writer = csv.writer(f, delimiter=';')
    		f.write("Liste Blanche AntiSpam"+"\n")
    		for i in range(len(list)):	
    			indice = indice + 1
    			sender_list = [indice] + list[i]["sender"]
    			receiver_list = [indice] + list[i]["receiver"]
    			writer.writerow(sender_list)
    			writer.writerow(receiver_list)

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [CSV] CSV saut de ligne = nouvelle ligne
    Par pikmin dans le forum Langage
    R�ponses: 10
    Dernier message: 19/05/2009, 16h02
  2. saut de ligne en indice
    Par $david$ dans le forum Mise en forme
    R�ponses: 4
    Dernier message: 22/08/2008, 13h58
  3. [CSV] Saut de ligne dans un csv
    Par ThE BiShOp* dans le forum Langage
    R�ponses: 4
    Dernier message: 06/12/2007, 14h21
  4. [XSLT][>CSV] probl�me sur sauts de ligne (RC)
    Par jaq dans le forum XSL/XSLT/XPATH
    R�ponses: 1
    Dernier message: 08/12/2006, 15h29
  5. [CSV] Export CSV avec PHP (saut de ligne)
    Par Indy80 dans le forum Langage
    R�ponses: 2
    Dernier message: 10/08/2006, 16h08

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