2016-01-28 3 views
2

Je rencontre des problèmes avec un code de test. Ce code est destiné à:Lignes vides non désirées entre les listes

  • lire un fichier csv
  • prendre deux entrées
  • mettre les entrées dans une liste
  • faire une nouvelle liste avec le contenu csv + la liste d'entrée
  • écraser le csv avec la nouvelle liste.

    import csv 
    
    input1 = input("input 1") 
    input2 = input("input 2") 
    
    original = [] 
    with open('test.csv', 'r') as f: 
        reader = csv.reader(f) 
        original = list(reader) 
    
    data = [input1,input2] 
    original.append(data) 
    
    with open('test.csv', 'w') as f: 
        writer = csv.writer(f) 
        writer.writerows(original) 
    

Par exemple, si « chats » et les « chiens » étaient dans le fichier, et je tapés dans « zèbres » et « girafes », je pense csv à ressembler à ceci quand je l'ouvrir dans le Bloc-notes: link

Cependant des lignes vides sont produites entre les listes quand je cours le code plus d'une fois, et je ne sais pas pourquoi. Je suis nouveau à Python et toute aide est appréciée.

+0

Pouvez-vous essayer de rstrip votre entrée? Par exemple, data = [input1.rstrip(), input2.rstrip()] – user1157751

+0

@ user1157751 qui ne fait aucun changement –

Répondre

1

La solution est:

open('test.csv', 'w', newline='') 

Dans les nouvelles versions de Python csv.Writer gère maintenant newline, mais open fait aussi. Ensuite, vous devez indiquer open qu'il ne doit pas ajouter de nouvelle ligne lors de l'écriture dans le fichier. Voir API documentation pour plus d'explications.

+0

merci, je pensais que ce serait quelque chose de simple comme ça. –

+0

@Gabriel Owens, De rien, si c'est la solution, vous pouvez l'accepter – jlandercy

+0

Quelle version de Python utilisez-vous? Quand j'ai essayé ceci, j'ai 'TypeError: 'newline' est un argument de mot clé invalide pour cette fonction'. – train1855