Se connecter avec
S'enregistrer | Connectez-vous

Python: formatage facile dans liste compliquée

Dernière réponse : dans Programmation

Bonsoir,
J'ai un "simple" probleme qui peut surement être résolu avec une fonction de python que je ne connais pas: je n'arrive pas à inserer mes commandes de formatages du style %(qqchose) dans une liste déjà créée. J'ai réussi à ajouter %(qqchose) dans ma liste mais ca n'a logiquement aucun effet. Je m'explique un peu mieux (enfin j'essaye): en fait j'ai une liste qui contient des lignes de code html avec des %f et %d que j'ai écris. Je voulais boucler sur cette liste et "remplacer" les %d et %f par les valeurs que je desire grâce à %(Blablabla) en fin de ligne sauf que c'est une liste et je n'arrive pas à y mettre mes %(blabla) sans qu'ils ne soient pris comme des chaines de caracteres de la liste (grace a append et join...) J'espere avoir été assez limpide et j'espere aussi que vous pourez m'eclairer!
Lassé par la pub ? Créez un compte
Expert Programmation

Non c'est pas clair, peut-être qu'un exemple simple aiderait ? :) 

Sinon, si tu sais manipuler un élément de ta chaine par une fonction def f(chaine)..., tu peux faire:
map(f, taListe)
ça te génère une liste à partir de la liste taListe dont la fonction f() est appliquée sur tous les éléments.

Exemple:
  1. def f(chaine):
  2. s = chaine.replace("%f", "%(blabla1)")
  3. s = s.replace("%d", "%(blabla2)")
  4. return s
  5.  
  6. liste=["000%f111%d2222", " %d ", "---%f"]
  7. map(f, liste)

C'est ça que tu veux ?

En fait j'ai une liste qui contient chaque ligne d'un fichier texte lui meme contenant du html dont voici un extrait:
  1. <td style="text-align: center; width: 350px;"><textarea
  2. readonly="readonly" name="Valeur1score" rows="2"
  3. cols="15" wrap="soft">Le meilleur
  4. avec: %d </textarea>
  5. </td>

Lorsque je boucle sur cette liste cela me permet d'afficher ma page html sauf qu'à la place de %d j'aimerai avoir une valeur. Si je choisis ta solution je vais remplacer mes %d par %(qqchose).
Je voudrais avoir une liste qui contient chaque ligne et si le caractere % est présent ajouter %(cequejevx).
Par exemple:
liste==['cols="15" wrap="soft">Le meilleur','avec: %d </textarea>' ,'</td>']
devient
liste=['cols="15" wrap="soft">Le meilleur','avec: %d </textarea>' %(9999),'</td>']
Expert Programmation

Pour créer ta liste, tu fais:
liste = tonTexte.split("\n")
Ensuite tu reprends ce que j'ai fait, mais tu utilises chaine.find('%d') pour savoir si la chaine contient un %d, après, tu concatènes simplement ce que tu veux rajouter.
Tu appliques le map pour faire toutes les lignes et c'est bon (moins de 10 lignes de codes).
Lassé par la pub ? Créez un compte
Tom's guide dans le monde