В чем разница между %s и %d при форматировании строк в Python?

Я не понимаю, что делают %s и %d и как они работают.

Они используются для форматирования строк. %s служит заполнителем строки, а %d - заполнителем числа. Соответствующие значения передаются в виде кортежа с помощью оператора %.

name = 'marcog'
number = 42
print '%s %d' % (name, number)

выведет marcog 42. Обратите внимание, что имя - это строка (%s), а число - целое число (%d для десятичной системы).

Подробнее см. https://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting.

В Python 3 пример будет выглядеть следующим образом:

print('%s %d' % (name, number))
Комментарии (5)

%s используется в качестве заполнителя для строковых значений, которые вы хотите ввести в форматированную строку.

%d используется в качестве заполнителя для числовых или десятичных значений.

Например (для python 3)

print ('%s is %d years old' % ('Joe', 42))

Выведет

Joe is 42 years old
Комментарии (3)

из Питон 3 док

%D является для десятичное целое число

"%S " является общая строка или объект и в случае объекта, то оно будет преобразовано в строку

Рассмотрим следующий код

name ='giacomo'
number = 4.3
print('%s %s %d %f %g' % (name, number, number, number, number))

из положить будет

4.300000 > Джакомо 4.3 4 4.3

как вы можете видеть, будет обрезать до целого числа, %S будет поддерживать форматирование, %F и будет печатать как поплавок и %G и используется для общего количества

очевидно

print('%d' % (name))

будет генерировать исключение, нельзя преобразовать строку в число

Комментарии (2)

Эти заполнители:

Например: 'Привет %S, у меня есть %Д пончики' %('Алиса', 42)

Эта строка кода будет заменить %S с Элис (str) и %D с 42.

Выход: 'Привет Алиса у меня 42 пончики'

Это может быть достигнуто с помощью "+" и большую часть времени. Чтобы получить более глубокое понимание на ваш вопрос, вы можете хотеть проверить {} / .формат (), а также. Вот один из примеров: https://stackoverflow.com/questions/5082452/python-string-formatting-vs-format

также вижу здесь Гугл на Python учебник видео @ 40', он имеет несколько объяснений https://www.youtube.com/watch?v=tKTZoB2Vjuk

Комментарии (0)

В %D и %S в строке форматирования-то "команды" и используется для форматирования строк. В для чисел, и "%S " для строк.

Для примера:

print("%s" % "hi")

и

print("%d" % 34.6)

Чтобы передать несколько аргументов:

печать (на"%ы %ы %ы%д" на % (на"Привет" и "Ну там-то", то "пользователей" и, 123456))вернетпривет user123456`

Комментарии (1)

%D и %S не являются вымышленными, они работают в качестве подставляемых. Например, если создать 2 переменные

variable_one = "Stackoverflow"
variable_two = 45

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

variable_3 = "I was searching for an answer in %s and found more than %d answers to my question"

Обратите внимание, что %S не работает для строки И работе для численного или десятичных величин.

если вы печатаете variable_3 это будет выглядеть так

print(variable_3 % (variable_one, variable_two))

Я искал ответа на StackOverflow и нашел более 45 ответы на мой вопрос.

Комментарии (0)

Это спецификаторы формата. Они используются, когда вы хотите включить значения ваших выражений Python в строки с соблюдением определенного формата.

Относительно подробное введение см. в Dive into Python.

Комментарии (0)

В случае, если вы хотите избежать %S или %D, то..

name = 'marcog'
number = 42
print ('my name is',name,'and my age is:', number)

Выход:

my name is marcog and my name is 42
Комментарии (4)

В соответствии с последними стандартами, это, как это должно быть сделано.

print("My name is {!s} and my number is{:d}".format("Agnel Vishal",100))

Проверьте питон3.6 документы и образец программы

Комментарии (0)

кстати ... <БР> питон3.6 поставляется с ф-строк, который делает вещи намного проще в форматировании! <БР> теперь, если вашей версии Python больше чем 3.6 вы можете форматировать ваши строки с этими доступными методами:

name = "python"

print ("i code with %s" %name)          # with help of older method
print ("i code with {0}".format(name))  # with help of format
print (f"i code with {name}")           # with help of f-strings
Комментарии (0)

Все эти информативные ответы, но никто не уловил суть, в чем разница между %S и .

%s не говорит форматеру для вызова функции НТР () на спор и так как мы принуждающего к строке по определению, "%S " является, по сути, просто выполняя ул.(арг).

%D и с другой стороны, звонит типа int() на аргумент перед вызовом (ул.), как ул.(инт(арг)), это инт принуждения, а также ул принуждения.

Например, я могу преобразовать шестнадцатеричное значение в десятичное,

>>> '%d' % 0x15
'21'

или обрезать поплавок.

>>> '%d' % 34.5
'34'

Но операция будет вызывать исключение, если аргумент не'т ряд.

>>> '%d' % 'thirteen'
Traceback (most recent call last):
  File "", line 1, in 
TypeError: %d format: a number is required, not str

Так, если целью является просто позвонить ул.(арг), тогда %S будет достаточно, но если вам нужно дополнительное форматирование (например, форматирование чисел с плавающей запятой знаков после запятой) или других форм принуждения, то другие символы форматирования не требуется.

С обозначения Ф-строку, когда вы покидаете праматерии из, значение по умолчанию стр``.

>>> a = 1
>>> f'{a}'
'1'
>>> f'{a:d}'
'1'
>>> a = '1'
>>> f'{a:d}'
Traceback (most recent call last):
  File "", line 1, in 
ValueError: Unknown format code 'd' for object of type 'str'

То же самое с строки.формат по умолчанию ул.

>>> a = 1
>>> '{}'.format(a)
'1'
>>> '{!s}'.format(a)
'1'
>>> '{:d}'.format(a)
'1'
Комментарии (0)