Je veux donc enregistrer mes résultats dans un fichier CSV mais je reçois toujours cette erreur

'_csv.Error: itérable attendu, pas int'

C'est mon code

import csv
word_freqs = {}
words = []

for data in items:
    with open('filepath.csv', 'w') as f:
        writer = csv.writer(f)
        word_freqs[data] = {}
        total = len(item_tokens[data])
        token_lengths = [len(token) for token in item_tokens[data]]
        words.append(token_lengths)
        print(token_lengths)
        writer.writerows(token_lengths)

Mais si je change

writer.writerows(token_lengths)

À

writer.writerow(token_lengths)

Il imprime la sortie correctement

[6, 5, 7, 1, 3,5, 7, 10, 3, 7, 6, 2, 9, 5, 2, 1, 7, 7, 11, 5, 6, 6]

[12, 2, 7, 13, 12, 9, 2, 2, 9, 2, 10, 10]

[6, 8, 12, 3, 11, 3, 3, 6, 7, 5, 4, 4, 3, 7, 7]

[5, 2, 4, 2, 4, 7, 1, 2, 9, 5, 2, 5, 4, 7, 2, 6]

Cependant, lorsqu'il s'agit d'enregistrer les résultats dans un fichier CSV, il n'enregistrera que la dernière ligne du tableau dans le CSV

[5, 2, 4, 2, 4, 7, 1, 2, 9, 5, 2, 5, 4, 7, 2, 6]

0
YWo 17 mars 2019 à 15:54

2 réponses

Meilleure réponse

Vous initialisez l'écrivain csv à chaque fois pour chaque itération d'élément. Vous ne vous retrouverez donc qu'avec la dernière ligne une fois le processus terminé. Initialisez-le une seule fois. Votre boucle for doit venir plus tard. Et comme l'autre réponse mentionnée, utilisez writerow

import csv
word_freqs = {}
words = []

with open('filepath.csv', 'w') as f:

    writer = csv.writer(f)

    for data in items:
        word_freqs[data] = {}
        total = len(item_tokens[data])
        token_lengths = [len(token) for token in item_tokens[data]]
        words.append(token_lengths)
        print(token_lengths)
        writer.writerow(token_lengths)
0
HariUserX 17 mars 2019 à 13:06

Comme vous créez de toute façon une liste de tous les token_lengths dans words, vous pouvez également le faire

import pandas as pd
pd.DataFrame(words).to_csv("filepath.csv",index=False)

Avantage: to_csv vous permet de faire beaucoup de personnalisations dans le csv, par exemple comment gérer différentes lignes de longueur (na_rep) etc.

0
mujjiga 17 mars 2019 à 13:16