2 votes

Python - Comment redémarrer une boucle for ?

Je suis assez novice en matière de python et j'ai vu des réponses à des questions similaires, mais j'ai eu beaucoup de mal à les comprendre. Je crée donc une nouvelle question.

Je vais essayer de donner autant de contexte et de code que nécessaire.

J'essaie donc de rechercher dans un fichier .csv une chaîne de caractères/un nombre (je ne le cherche que dans la première colonne) et si je le trouve, je fais en sorte qu'il saisisse la ligne entière où se trouve la chaîne de caractères/le nombre.

(import csv was included)

input_string = input()
input_string_2 = input()

def search(x):          
    for row in (the .csv file):
        if x == row[0]:
            print (row)
            return row

output_array = search(input_string)
output_array_2 = search(input_string_2)

Cela semble fonctionner avec une seule entrée. Mais si j'essaie avec des entrées multiples, il ne parcourt la liste qu'une seule fois, ce qui signifie que parfois je n'obtiendrai pas le résultat de la deuxième recherche. Je demande si quelqu'un sait comment faire pour que la fonction recommence à chaque fois qu'elle est appelée. Merci d'avance.

Notez que je n'ai pas obtenu d'erreur lorsque j'ai exécuté cette procédure, donc s'il y a une faute d'orthographe évidente, ce n'est probablement pas le problème.

Edit : La solution qui a été postée pourrait ne pas être assez large pour répondre à la question dans d'autres situations.

2voto

Barmar Points 135986

Vous devez chercher à revenir au début du fichier, sinon il n'y a plus rien à lire.

def search(x):
    csv_file.seek(0)
    for row in csv_file:
        if x == row[0]:
            print(row)
            return row

0voto

JD12 Points 69

Je ne sais pas si c'est ce que vous cherchiez :

def search(x):
    y = []
    for row in csv_file:
        if x == row[0]:
            print(row)
            y.append(row)
    return y

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X