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

Mary-Kate Olsen
Libérer: 2024-10-21 21:03:30
original
392 Les gens l'ont consulté

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
Copier après la connexion

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
Copier après la connexion

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>
Copier après la connexion

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!

source:php
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!