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.

Comparer deux chaines, l'une saisie l'autre issue d'un parser

+1 vote
 __author__ = 'root'

import os, sys
from path import path


def parcours_fichier():
    global f, yolo
    saisie = ['', '', '', '', '']
    for i in range(0, 5):
        saisie[i] = raw_input('Entrez les valeurs a verifier :')
    for f in path('/home/local/SERVICE/gos/test').walkfiles():
        ret = parser_file(f)
        if ret is False:
            pass
        else:
            yolo = [ret[10], ret[4], ret[7], ret[8], ret[9]]
            for i in saisie:
                if i == yolo:
                    print ''
                else:
                    print f


def parser_file(fi):
    if os.path.exists(fi) and fi.endswith(".txt"):
        with open(fi, "r") as lecture:
            fr = lecture.read()
            frs = fr.split()
            lecture.close()
            return frs
    else:
        return False


parcours_fichier()

La partie posant problème est celle ou je souhaite comparer ces deux chaines :

 else:
        yolo = [ret[10], ret[4], ret[7], ret[8], ret[9]]
        for i in saisie:
            if i == yolo:
                print ''
            else:
                print f

Je voudrais d'abord comparer le champ 10 de la liste ret avec le premier champ de la liste saisie etc.. puis retourner le fichier qui pose probleme a l'ecran.

demandé 13-Jul-2015 par anonyme
edité 13-Jul-2015 par boblinux

C'est quoi la question en fait?

Perso j'ai pas très bien compris où tu veux en venir =s

Tu veux comparer ret[10] avec saisie[0], ensuite ret[10] avec saisie[1] ... ret[10] avec saisie[n]
Ensuite ret[4] avec saisie[0] ... ret[4] avec saisie[n] ....
ret[7] ....
ret[8] ...
ret[9] ...

Et si les champs ne sont pas les mêmes tu veux afficher le contenu de saisie[x] ?

Oui c'était bien ça :)

1 Réponse

+4 votes
 
Meilleure réponse

Je suis pas sûr d'avoir pigé si tu voulais comparer chaque élément de saisie avec chaque élément de yolo ou seulement le premier avec le premier, second avec le second, etc... Dans le doute...

Tous les éléments entre eux:

import itertools
for p in itertools.product(saisie, yolo):
    if p[0] != p[1]:
        print('fichier %s pose problème (%s != %s)' % (f, p[0], p[1]))

L'élément un avec un, deux avec deux...:

for i,j in zip(saisie, yolo):
    if i != j:
        print('fichier %s pose problème (%s != %s)' % (f, i, j))
répondu 13-Jul-2015 par Arza (726 points)

J'ai pu adapter ton code à mon besoin, merci pour ta réponse

et donc, on ne saura jamais ce qu'était la question au départ :P

@Furankun, jette un coup d’œil à mon com's au post initial ^^

...