Tom's Guide > Forum > Programmation > Python: formatage facile dans liste compliquée

Python: formatage facile dans liste compliquée

Forum Programmation : Python: formatage facile dans liste compliquée

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

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!

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

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:

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


C'est ça que tu veux ?


Message édité par CRicky le 08-04-2009 à 21:38:22
------------------------------ 6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky

En fait j'ai une liste qui contient chaque ligne d'un fichier texte lui meme contenant du html dont voici un extrait:

Code :
  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>']

Répondre à rcomx

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).

------------------------------ 6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky

Merci!!
En fait j'ai créé une liste contenant mes lignes html auquel j'ai rajouté mes formatages ce qui revient au même que ta méthode.

Répondre à rcomx
Tom's Guide > Forum > Programmation > Python: formatage facile dans liste compliquée
Aller à :

Il y a 2696 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens