Maison > développement back-end > Tutoriel Python > Pourquoi mon code Python traite-t-il la ligne d'en-tête dans un fichier CSV au lieu de l'ignorer ?

Pourquoi mon code Python traite-t-il la ligne d'en-tête dans un fichier CSV au lieu de l'ignorer ?

Mary-Kate Olsen
Libérer: 2024-10-30 20:49:02
original
395 Les gens l'ont consulté

Why is my Python code processing the header row in a CSV file instead of skipping it?

Saut des en-têtes lors du traitement d'un fichier CSV avec Python

Problème :

En Python, un fichier CSV est en cours de traitement , mais la première ligne (ligne d'en-tête) est modifiée au lieu d'être exclue.

Code en question :

<code class="python">in_file = open("tmob_notcleaned.csv", "rb")
reader = csv.reader(in_file)
out_file = open("tmob_cleaned.csv", "wb")
writer = csv.writer(out_file)
row = 1

for row in reader:
    # Row processing logic

in_file.close()    
out_file.close()</code>
Copier après la connexion

Problème :

L'initialisation de la variable 'row' à 1 n'empêche pas le traitement de la ligne d'en-tête.

Solution :

Pour ignorer la ligne d'en-tête, utilisez la fonction next() pour faire avancer le lecteur itérable d'un élément. La valeur de retour de next() peut être ignorée dans ce cas.

Code modifié :

<code class="python">with open("tmob_notcleaned.csv", "rb") as in_file, open("tmob_cleaned.csv", "wb") as out_file:
    reader = csv.reader(in_file)
    next(reader, None)  # Skip the header row
    writer = csv.writer(out_file)

    for row in reader:
        # Row processing logic</code>
Copier après la connexion

Option alternative :

Si la ligne d'en-tête est souhaitée dans le fichier de sortie, elle peut être transmise àwriter.writerow() avant la boucle :

<code class="python">with open("tmob_notcleaned.csv", "rb") as in_file, open("tmob_cleaned.csv", "wb") as out_file:
    reader = csv.reader(in_file)
    headers = next(reader, None)  # Returns the header row or None if the input is empty

    if headers:
        writer.writerow(headers)

    for row in reader:
        # Row processing logic</code>
Copier après la connexion

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 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