Parfois dans les scripts Python je vois des lignes comme:
cmd = "%s/%s_tb -cm cond+line+fsm -ucli -do \"%s\""
Où est le %s
dans la ligne ci-dessus substitué? Python a-t-il une pile de chaînes et il les fait apparaître et remplace %s
?
Ce serait plus tard utilisé dans quelque chose comme:
print cmd % ('foo','boo','bar')
Ce que vous voyez est juste une affectation de chaîne avec des champs qui seront ensuite remplis.
Notions de base de python formatage de chaîne
Pas une réponse spécifique à votre ligne de code, mais puisque vous avez dit que vous êtes nouveau à python j'ai pensé que je l'utiliserais comme exemple pour partager de la joie;)
Exemple simple en ligne avec une liste:
>>> print '%s %s %s'%('python','is','fun')
python is fun
Exemple simple à l'aide d'un dictionnaire:
>>> print '%(language)s has %(number)03d quote types.' % \
... {"language": "Python", "number": 2}
Python has 002 quote types
En cas de doute, consultez les documents officiels python - http://docs.python.org/library/stdtypes.html#string-formatting
Il est utilisé pour l'interpolation de chaînes. Le %s
est remplacé par une chaîne. Vous utilisez l'opérateur modulo (%
) pour effectuer une interpolation de chaîne. La chaîne sera sur le côté gauche, les valeurs à substituer aux divers %s
sont à droite, dans un Tuple.
>>> s = '%s and %s'
>>> s % ('cats', 'dogs' )
<<< 'cats and dogs'
Si vous n'avez qu'un seul personnage, vous pouvez oublier le tuple.
>>> s = '%s!!!'
>>> s % 'what'
<<< 'what!!!'
Dans les versions plus récentes de python, la méthode recommandée consiste à utiliser la méthode format
du type chaîne:
>>> '{0} {1}'.format('Hey', 'Hey')
<<< 'Hey Hey'