Ci-dessous se trouve le code, mais la sortie est incorrecte, car elle ne produit que les premières valeurs d'index lorsqu'elle boucle. Cela fonctionne quand j'ai imprimé les valeurs de col, rac et mon. J'ai également vérifié les valeurs i pour m'assurer qu'elles sont incrémentées dans le bon sens.

FICHIER TEXTE:

Fav Color   -- *color* 
Fav Car     -- *car*
Number      -- *Money*

CODE:

with open('carstest.txt', 'r') as file :
    testdata = file.read()

colors = ["RED","GREEN","BLUE"]
car =['Ferrari', 'Mustang','Camero']
Money = ['one','two','three']
i =0
while i <len(colors):
    col = colors[i]
    rac = car[i]
    mon = Money[i]
    testdata = testdata.replace('*color*',  col)
    testdata = testdata.replace('*car*', rac)
    testdata = testdata.replace('*Money*', mon)
    print(testdata)
    i+=1

else:
    print ("DONE")

PRODUCTION:

Fav Color   -- RED 
Fav Car     -- Ferrari
Number  -- one

Fav Color   -- RED 
Fav Car     -- Ferrari
Number  -- one

Fav Color   -- RED 
Fav Car     -- Ferrari
Number  -- one

DONE

Sortie désirée:

Fav Color   -- RED 
Fav Car     -- Ferrari
Number  -- one

Fav Color   -- GREEN
Fav Car     -- Mustang
Number  -- two

Fav Color   -- BLUE
Fav Car     -- Camero
Number  -- three

DONE
1
VPapz 8 mars 2019 à 20:20

2 réponses

Meilleure réponse

Une fois le premier cycle de remplacements effectué, les espaces réservés ne sont plus là pour être remplacés. Si vous commencez avec la valeur d'origine de testdata à chaque itération, ça devrait aller.

0
Scott Hunter 8 mars 2019 à 17:25

Le problème vient de l'algorithme while. Pour chaque cycle supplémentaire, vous devez recharger le contenu d'origine de la variable (contenu du fichier). En termes simples, vous recherchez une chaîne *color* qui, malheureusement, n'existe plus car str.replace() a été utilisée. Le testdata a donc changé et la répétition du cycle suivant n'est plus pertinente. Sinon, vous devez résoudre l'algorithme. Par exemple, au début du cycle while, créez une variable temporaire:

with open('carstest.txt', 'r') as file :
    testdata = file.read()

colors = ['RED','GREEN','BLUE']
car =['Ferrari', 'Mustang','Camero']
Money = ['one','two','three']

i = 0
while i < len(colors):
    s = testdata
    s = s.replace('*color*' , colors[i])
    s = s.replace('*car*'   , car[i])
    s = s.replace('*Money*' , Money[i])
    print(s)
    i += 1
else:
    print ("DONE")
0
s3n0 8 mars 2019 à 17:44