Sustitución predeterminada de% s en scripts de python

A veces, en los scripts de Python veo líneas como:

cmd = "%s/%s_tb -cm cond+line+fsm -ucli -do \"%s\"" 

¿Dónde se sustituye el %s en la línea anterior? ¿Python tiene alguna stack de cadenas y las hace estallar y reemplaza a %s ?

Eso sería más tarde usado en algo como:

 print cmd % ('foo','boo','bar') 

Lo que estás viendo es solo una asignación de cadena con campos en ella que luego se completará.

Conceptos básicos del formato de cadena de python

No es una respuesta específica a tu línea de código, pero como dijiste que eres nuevo en Python, pensé que usaría esto como un ejemplo para compartir algo de alegría;)

Ejemplo simple en línea con una lista:

 >>> print '%s %s %s'%('python','is','fun') python is fun 

Ejemplo simple usando un diccionario:

 >>> print '%(language)s has %(number)03d quote types.' % \ ... {"language": "Python", "number": 2} Python has 002 quote types 

En caso de duda, consulte los documentos oficiales de python: http://docs.python.org/library/stdtypes.html#string-formatting

Se está utilizando para la interpolación de cuerdas. El %s se sustituye por una cadena. Utiliza el operador de módulo ( % ) para hacer la interpolación de cadenas. La cadena estará en el lado izquierdo, los valores para sustituir los diversos %s están a la derecha, en una tupla.

 >>> s = '%s and %s' >>> s % ('cats', 'dogs' ) <<< 'cats and dogs' 

Si tienes un solo carácter puedes olvidar la tupla.

 >>> s = '%s!!!' >>> s % 'what' <<< 'what!!!' 

En las versiones más recientes de python, la forma recomendada es usar el método de format del tipo de cadena:

 >>> '{0} {1}'.format('Hey', 'Hey') <<< 'Hey Hey'