Ответы:
Они используются для форматирования строк. %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))
из питона 3 док
%d
для десятичного целого числа
%s
для общей строки или объекта, а в случае объекта она будет преобразована в строку
Рассмотрим следующий код
name ='giacomo'
number = 4.3
print('%s %s %d %f %g' % (name, number, number, number, number))
выход будет
giacomo 4.3 4 4.300000 4.3
как вы можете видеть, %d
будет усекать до целого числа, %s
будет поддерживать форматирование, %f
печатать как число с плавающей точкой и %g
будет использоваться для общего числа
очевидно
print('%d' % (name))
сгенерирует исключение; вы не можете преобразовать строку в число
%s
вместо этого используется номер.
%s
используется в качестве заполнителя для строковых значений, которые вы хотите вставить в форматированную строку.
%d
используется в качестве заполнителя для числовых или десятичных значений.
Например (для питона 3)
print ('%s is %d years old' % ('Joe', 42))
Будет выходной
Joe is 42 years old
Это заполнители:
Например: 'Hi %s I have %d donuts' %('Alice', 42)
Эта строка кода заменит% s Алисой (str) и% d 42.
Вывод: 'Hi Alice I have 42 donuts'
Это может быть достигнуто с "+" большую часть времени. Чтобы глубже понять ваш вопрос, вы можете также проверить {} / .format (). Вот один пример: форматирование строки Python:% против .format
также смотрите здесь обучающее видео по Google Python @ 40 ', в нем есть некоторые объяснения https://www.youtube.com/watch?v=tKTZoB2Vjuk
%d
И %s
строка форматирования «команды» используются для строк формата. Это %d
для чисел и %s
для строк.
Для примера:
print("%s" % "hi")
и
print("%d" % 34.6)
Чтобы передать несколько аргументов:
print("%s %s %s%d" % ("hi", "there", "user", 123456))
вернется hi there user123456
Все это информативные ответы, но ни один из них не совсем понимает, в чем разница между %s
и %d
.
%s
говорит форматировщику вызвать str()
функцию для аргумента, и поскольку мы приводим строку к определению, %s
по сути, просто выполняем str(arg)
.
%d
с другой стороны, вызывает int()
аргумент перед вызовом str()
, например str(int(arg))
, это вызовет int
как принуждение, так и str
принуждение.
Например, я могу преобразовать шестнадцатеричное значение в десятичное,
>>> '%d' % 0x15
'21'
или обрезать поплавок.
>>> '%d' % 34.5
'34'
Но операция вызовет исключение, если аргумент не является числом.
>>> '%d' % 'thirteen'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: %d format: a number is required, not str
Так что, если целью является просто вызов str(arg)
, то этого %s
достаточно, но если вам нужно дополнительное форматирование (например, форматирование с плавающей запятой) или другое приведение, тогда нужны другие символы формата.
В f-string
обозначениях, когда вы оставляете форматер вне, по умолчанию используется str
.
>>> a = 1
>>> f'{a}'
'1'
>>> f'{a:d}'
'1'
>>> a = '1'
>>> f'{a:d}'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: Unknown format code 'd' for object of type 'str'
То же самое относится и к string.format
; по умолчанию это str
.
>>> a = 1
>>> '{}'.format(a)
'1'
>>> '{!s}'.format(a)
'1'
>>> '{:d}'.format(a)
'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
работает для String и %d
работает для числовых или десятичных переменных.
если вы напечатаете variable_3
это будет выглядеть так
print(variable_3 % (variable_one, variable_two))
Я искал ответ в StackOverflow и нашел более 45 ответов на мой вопрос.
Они являются спецификаторами формата. Они используются, когда вы хотите включить значение ваших выражений Python в строки, с соблюдением определенного формата.
Смотрите Dive into Python для относительно подробного введения.
Согласно последним стандартам, так и должно быть.
print("My name is {!s} and my number is{:d}".format("Agnel Vishal",100))
Проверьте документы Python3.6 и пример программы
Если вы хотите избежать% 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
%s
и %d
.
print
это функция в Python 3, а не оператор.
% s используется для хранения пробела для строки% d используется для хранения пробела для числа
name = "Moses";
age = 23
print("My name is %s am CEO at MoTech Computers " %name)
print("Current am %d years old" %age)
print("So Am %s and am %d years old" %(name,age))
это видео подробно рассказывает об этом совете https://www.youtube.com/watch?v=4zN5YsuiqMA
Говоря о том, что ...
Python3.6 идет с, f-strings
что делает вещи намного проще в форматировании!
Теперь, если ваша версия 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
%s
это используется с конфигурациями поисковых систем. Chrome использует%s
для замены ключевых слов, введенных в адресной строке. Python использует%s
аналогичным образом. Вprint('description: %s' % descrip)
с%s
оператором будет заменен текстовой строки , хранящейся вdescrip
переменной. Круглые скобки предотвращают сообщение об ошибке в Python 3.