Подстановка по умолчанию% s в скриптах Python - PullRequest
15 голосов
/ 10 мая 2011

Иногда в скриптах Python я вижу строки вроде:

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

Где подставляется %s в приведенной выше строке? Есть ли в Python какой-то стек строк, и он выталкивает их и заменяет %s?

Ответы [ 3 ]

19 голосов
/ 10 мая 2011

Это будет позже использовано в следующем виде:

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

То, что вы видите, это просто строковое присваивание с полями в нем, которые позже будут заполнены.

19 голосов
/ 10 мая 2011

Основы форматирования строки Python

Не конкретный ответ на вашу строку кода, но так как вы сказали, что вы новичок в python, я решил использовать это в качестве примера, чтобы поделиться радостью;)

Простой пример, встроенный в список:

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

Простой пример использования словаря:

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

Если сомневаетесь, проверьте официальные документы питона - http://docs.python.org/library/stdtypes.html#string-formatting

17 голосов
/ 10 мая 2011

Используется для интерполяции строк.%s заменяется строкой.Вы используете оператор по модулю (%) для интерполяции строк.Строка будет слева, значения для замены различных %s - справа, в кортеже.

>>> s = '%s and %s'

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

Если у вас всего один символ, вы можете забыть кортеж.

>>> s = '%s!!!'

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

В более новых версиях python рекомендуется использовать метод format типа string:

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