web-dev-qa-db-fra.com

Par défaut, substitution de% s dans les scripts python

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?

15
prahallada

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.

19
John Gaines Jr.

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

19
HurnsMobile

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'
17
zeekay