Exactement. L'instruction item in liste_d_items ne valide que si un des items de la liste correspond exactement à l'item demandé. Dans x=["aaa", "bbbccc"], "aaa" in x sera ok mais "bbb" in x ou "ccc" in x ne le seront pas.
Accessoirement tu n'as jusqu'à présent jamais vraiment décrit ton problème avec exactitude (style "j'ai ça en entrée, je cherche ça") mais seulement les solutions que toi tu pensais adaptées, Cas typique d'un problème XY.
Tu peux. Mais tu tranformes la donnée lue (typiquement tu rajoutes une virgule) ce qui est très dangereux car transformer équivaut à dénaturer. Comment réagira ton programme si la ligne contient déjà une virgule?
La solution ici est de descendre au niveau en dessous. S'il ne trouve pas "passwd" dans une liste de mots, alors tu peux balayer la liste et, pour chaque mot, regarder si la chaine "passwd" se trouve dans le mot en cours. Appliqué à mon x=["aaa", "bbbccc"] cela se traduira par for s in x: print("bbb" in s).
Et comme (remonté à toi) ce "x" de mon exemple représente une ligne de ton fichier, il te faut deux boucles: la première qui balaye chaque ligne, et la seconde qui balaye chaque mot de la ligne. Et tu as de la chance car l'instruction in se charge elle-même de la boucle de recherche sinon il te faudrait une 3° boucle.








Répondre avec citation

Partager