Je construis une chaîne s
en Python 2.6.5 qui aura un nombre variable de %s
jetons, qui correspondent au nombre d'entrées dans la liste x
. J'ai besoin d'écrire une chaîne formatée. Ce qui suit ne fonctionne pas, mais indique ce que j'essaie de faire. Dans cet exemple, il y a trois %s
jetons et la liste a trois entrées.
s = '%s BLAH %s FOO %s BAR'
x = ['1', '2', '3']
print s % (x)
Je voudrais que la chaîne de sortie soit:
1 BLAH 2 FOO 3 BAR
python
string
list
formatting
string-formatting
SabreWolfy
la source
la source
(x)
est la même chose quex
. Mettre un seul jeton entre crochets n'a aucune signification en Python. Vous mettez généralement des crochetsfoo = (bar, )
pour faciliter la lecture, mais vous faitesfoo = bar,
exactement la même chose.print s % (x)
est ce qu'OP a écrit, je le citais juste.foo = (bar, )
plus :)(x)
notation pour plus de clarté; cela évite également d'oublier les crochets si vous ajoutez ultérieurement des variables supplémentaires.Vous devriez jeter un oeil à la méthode de format de python. Vous pouvez ensuite définir votre chaîne de mise en forme comme ceci:
la source
%
l'opérateur ne décompresse que les tuples.s
plus complexe, car je devrais inclure des nombres incrémentiels plutôt que simplement%s
pour chaque position.s
est construit en un certain nombre d'étapes différentes, il est donc beaucoup plus facile d'inclure simplement le%s
jeton.print u'%(blah)d BLAHS %(foo)d FOOS …' % {'blah': 15, 'foo': 4}
.s = '{} BLAH {} BLAH BLAH {} BLAH BLAH BLAH'
Suite à cette page de ressources , si la longueur de x varie, nous pouvons utiliser:
pour créer un espace réservé pour chaque élément de la liste
x
. Voici l'exemple:la source
Voici une seule ligne. Une petite réponse improvisée utilisant le format avec print () pour parcourir une liste.
Que diriez-vous de cela (python 3.x):
Lisez les documents ici sur l'utilisation de format () .
la source
Depuis que je viens d'apprendre ce truc cool (indexation dans des listes à partir d'une chaîne de format), j'ajoute à cette vieille question.
Production:
Cependant, je n'ai toujours pas compris comment faire du découpage (à l'intérieur de la chaîne de format
'"{x[2:4]}".format...
) et j'aimerais bien le savoir si quelqu'un a une idée, mais je soupçonne que vous ne pouvez tout simplement pas le faire.la source
C'était une question amusante! Une autre façon de gérer cela pour les listes de longueur variable est de créer une fonction qui tire pleinement parti de la
.format
méthode et du déballage des listes. Dans l'exemple suivant, je n'utilise aucun formatage sophistiqué, mais cela peut facilement être modifié pour répondre à vos besoins.la source
La même chose que la réponse de @ neobot mais un peu plus moderne et succincte.
la source
La sortie est
la source