Maison  >  Article  >  développement back-end  >  Comment réparer le script Python qui saute des lignes lors de l'ajout d'une nouvelle colonne aux fichiers CSV ?

Comment réparer le script Python qui saute des lignes lors de l'ajout d'une nouvelle colonne aux fichiers CSV ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-21 21:03:30376parcourir

How to Fix Python Script that Skips Lines When Adding a New Column to CSV Files?

Comment ajouter une nouvelle colonne aux fichiers CSV en Python

Description du problème

Vous disposez de plusieurs fichiers CSV contenant des données comme celle-ci :

Name        Code
blackberry  1
wineberry   2
rasberry    1
blueberry   1
mulberry    2

Vous souhaitez ajouter une nouvelle colonne nommée "Berry" à tous ces fichiers, afin que le résultat ressemble à ceci :

Name        Code    Berry
blackberry  1   blackberry
wineberry   2   wineberry
rasberry    1   rasberry
blueberry   1   blueberry
mulberry    2   mulberry

Cependant, votre script Python actuel ne fonctionne pas correctement . Il saute chaque ligne et remplit la nouvelle colonne avec uniquement la valeur "Berry".

Solution

Pour résoudre ce problème, vous devez modifier le code pour utiliser la fonction next() au lieu de row0 = r.next() (pour Python 3, utilisez reader = csv.reader(csvinput)). Le code mis à jour :

<code class="python">import csv

with open('C:/test/test.csv', 'r') as csvinput:
    with open('C:/test/output.csv', 'w') as csvoutput:
        writer = csv.writer(csvoutput, lineterminator='\n')
        reader = csv.reader(csvinput)

        all = []
        row = next(reader)
        row.append('Berry')
        all.append(row)

        for row in reader:
            row.append(row[0])
            all.append(row)

        writer.writerows(all)</code>

Remarques :

  • Le paramètre lineterminator est défini sur 'n' pour éviter le double espacement dans le fichier de sortie.
  • Une liste est utilisé pour ajouter toutes les lignes et les écrire d'un seul coup à l'aide de writerows. Cela peut ne pas convenir aux fichiers extrêmement volumineux.
  • Les deux instructions open peuvent être imbriquées dans la même ligne qu'avec open('C:/test/test.csv','r') comme csvinput, open('C:/test/output.csv', 'w') comme csvoutput:.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn