Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

Probleme de parcours de .csv.

+1 vote

Contexte:
J'ai un fichier .csv (43Mo) avec des donnees entre double quotes (Ex: "Je","s'appelle","groot").
J'aimerais retirer les doubles quotes de mes donnees (Resultat: Je,s'appelle,groot)

Code:
J'ai donc pondu un petit script qui est cense faire le travail :

with open(nom_fichier, 'r+',encoding='utf-8', errors='ignore') as mon_fichier:
for line in mon_fichier:
    result = ','.join([token.replace('"', '') for token in line.split(",")])
    mon_fichier.write(result)

Probleme:
J'ai aucune erreur au moment de la compilation, mais j'ai certaines lignes qui semblent ignorees. Comme s'il prenait que des batchs de 50 lignes (et que mon script s'applique qu'un batch sur deux du coup...)

demandé 15-Jun par Julien

NB: il n'y a pas de compilation à proprement parler en python, du moins le fait que cette étape ne plante pas ne signifie quasiment rien à part que tu n'as pas d'erreur de syntaxe.

3 Réponses

+1 vote

J'ai aucune erreur au moment de la compilation

avec errors=ignore.. ça me parait logique, non ?

essaie de separer tes traitements write et string construction ?

répondu 15-Jun par pydidi (262 points)

Par exemple, essayer d'écrire dans un autre fichier que celui d'origine ?

0 votes

r+ est casse gueule à l'emploi, il faut savoir ce que l'on fait. Dans ton cas, tu lis et écris en même temps dans le fichier, alors que le curseur est le même.

Tu dois soit stocker le contenu de fichier avant de le traiter (sans oublier de te repositionner au début du fichier avec le seek(0) qui va bien), soit écrire dans au autre fichier que celui d'origine.

répondu 18-Jun par yoch (2,494 points)
edité 18-Jun par yoch
0 votes
    with open(fichier_a_lire, 'r', encoding='utf-8', errors='ignore') as f:
        with open(fichier_a_ecrire, 'w', encoding='utf-8', errors='ignore') as f_csv:
            for line in f.readlines():
                    f_csv.write(str(ligne).replace('"', ''))
répondu 21-Jul par bidochon (202 points)
...