Je suis nouveau en python, j'ai une liste avec une liste imbriquée et à l'intérieur elle contient des tuples qui ressemblent à ci-dessous
for data in list: file= data[2] text_file= open(file,'r').readlines() if data[0], data[1] in text_file: #do something..
Je voudrais accéder à une liste à la fois, car exemple, j'ouvre le fichier test1.txt à partir du 1er index de la liste [2] et si la chaîne 'papa' et 'maman' est présente, filtrez le fichier et lisez-le de la même manière pour le fichier text2.txt si 'frère' et 'sœur' sont là, alors lisez et filtrez.
J'ai le code ci-dessous:
[('dad', 'mom', 'test1.txt')] [('brother', 'sister', 'test2.txt')] [('uncle', 'aunty', 'test3.txt')] [('grandpa', 'grandma', 'test4.txt')]
4 Réponses :
On ne sait pas ce qui ne va pas pour vous puisque vous avez lu le nom de fichier correct 4 fois
Je suppose que vous devez quitter la boucle for si vous trouvez ce que vous cherchez avec l'instruction break.
Essayez de ne pas utiliser de mots clés tels que list
L=[[('dad', 'mom', 'test1.txt')], [('brother', 'sister', 'test2.txt')], [('uncle', 'aunty', 'test3.txt')], [('grandpa', 'grandma', 'test4.txt')]] for data in L: f=data[0][2] file1=open(f,"r") text_file=file1.read() if(data[0][0] and data[0][1] in text_file): #do something
Si j'utilise votre méthode par exemple data [0] [2], cela donne une valeur «1» et indique que le fichier est introuvable. @Venkat
Hé désolé, j'ai modifié, pouvez-vous vérifier maintenant
désolé Cela ne fonctionne pas non plus @Trilok, si vous savez pouvez-vous me guider si sa liste de liste signifie? J'ai entendu dire que la liste imbriquée est meilleure que la liste tuple.
Pouvez-vous s'il vous plaît m'envoyer à quoi ressemblent vos données. Ce que j'ai fait, ce sont des listes composées de listes contenant des tuple. Pouvez-vous me faire savoir si ce n'est pas ce que vous recherchez?
Voici comment je l'ai fait:
if i[0] == "dad": print(something)
J'ai itéré les éléments de la liste dans la plage du longueur de la liste: len (lis) . De cette façon, j
prend les valeurs 0, 1, 2, 3
. Ensuite, j'ai utilisé une boucle for
qui parcourt les éléments de la liste. Par conséquent, j
prend les valeurs des éléments de lis
comme lis [0], lis [1], lis [2], lis [3] code >.
Maintenant que j
a les valeurs des éléments de la liste, nous pouvons utiliser i [(integer)]
et accéder aux éléments des éléments de la liste à savoir, "papa", "maman", "test1.txt"
, etc.
Nous pouvons donc appliquer des conditions à i [0] ou i [ 1]
etc.
Par exemple:
lis=[[('dad', 'mom', 'test1.txt')], [('brother', 'sister', 'test2.txt')], [('uncle', 'aunty', 'test3.txt')], [('grandpa', 'grandma', 'test4.txt')]] for i in range(len(lis)): for j in lis[j]: f = open(i[2]) lines = f.read() if i[0] in lines and i[1] in lines: #do sth
J'espère que cela vous aidera!
lis=[[('dad', 'mom', 'test1.txt')], [('brother', 'sister', 'test2.txt')], [('uncle', 'aunty', 'test3.txt')], [('grandpa', 'grandma', 'test4.txt')]] for i in lis: data=i[0][2] f=open(data,'r') file=f.read() if (i[0][0] and i[0][1])in file: pass