私は%s
と%d
が何をするのか、そしてそれらがどのように働くのか理解していません。
それらは文字列のフォーマットに使用されます。 %s
は文字列のプレースホルダーとして機能し、%d
は数値のプレースホルダーとして機能します。関連する値は%
演算子を使ってTupleを介して渡されます。
name = 'marcog'
number = 42
print '%s %d' % (name, number)
marcog 42
を表示します。 nameは文字列(%s)、numberは整数(10進数の場合は%d)です。
詳しくは https://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting をご覧ください。
Python 3では、例は次のようになります。
print('%s %d' % (name, number))
%s
は、フォーマットされた文字列に挿入したい文字列値のプレースホルダーとして使用されます。
%d
は、数値または10進値のプレースホルダーとして使用されています。
例えば(python 3の場合)
print ('%s is %d years old' % ('Joe', 42))
出力しますか
Joe is 42 years old
%d
は10進整数用です
%s
は一般的な文字列またはオブジェクト用で、objectの場合は文字列に変換されます
次のコードを見てください
name ='giacomo'
number = 4.3
print('%s %s %d %f %g' % (name, number, number, number, number))
出力されます
ジャコモ4.3 4 4.300000 4.3
ご覧のとおり、%d
は整数に切り捨てられ、%s
はフォーマット設定を維持し、%f
はfloatとして出力され、%g
は総称として使用されます
明らかに
print('%d' % (name))
例外が発生します。文字列を数値に変換することはできません
これらはプレースホルダーです。
例えば、次のとおりです。'Hi %s I have %d donuts' %('Alice', 42)
このコード行は、%sをAlice(str)に、%dを42に置き換えます。
出力:'Hi Alice I have 42 donuts'
これはほとんどの場合「+」で実現できます。あなたの質問をより深く理解するためには、{}/.format()もチェックした方が良いでしょう。その一例を示します。 Python文字列フォーマット:%vs. .format
また、ここでグーグルpythonチュートリアルビデオ@ 40 'を参照してください、それはいくつかの説明があります https://www.youtube.com/watch?v=tKTZoB2Vjuk
%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
は数値または10進数変数に対して機能することに注意してください。
variable_3
を印刷すると、このようになります。
print(variable_3 % (variable_one, variable_two))
私はStackOverflowで答えを探していて、私の質問に対して45以上の答えを見つけました。
%d
および%s
文字列フォーマット "コマンド"は、文字列をフォーマットするために使用されます。 %d
は数字用で、%s
は文字列用です。
例を挙げましょう。
print("%s" % "hi")
そして
print("%d" % 34.6)
複数の引数を渡すには:
print("%s %s %s%d" % ("hi", "there", "user", 123456))
はhi there user123456
を返します
それらはフォーマット指定子です。 Pythonの式の値を特定のフォーマットを強制して文字列に含める場合に使用されます。
比較的詳細な紹介については、 Pythonに飛び込む を参照してください。
その場合は、%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
それについて言えば….
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
最新の標準に従って、これはそれが行われるべき方法です。
print("My name is {!s} and my number is{:d}".format("Agnel Vishal",100))
python3.6 docs および サンプルプログラム を確認してください
これらはすべて有益な答えですが、%s
と%d
の違いが何であるかという根本的な原因になっているものはありません。
%s
は、引数に対してstr()
関数を呼び出すようにフォーマッタに指示します。定義によって文字列に強制変換しているため、%s
は基本的に単にstr(arg)
を実行するだけです。
一方%d
は、int()
を呼び出す前に、str()
を呼び出す前に、引数でstr(int(arg))
を呼び出しています。これは、int
強制およびstr
強制を引き起こします。
たとえば、16進値を10進数に変換できます。
>>> '%d' % 0x15
'21'
またはfloatを切り捨てます。
>>> '%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 = 'some_string'
>>> f'{a:s}'
'some_string'
>>> a = 'some_string'
>>> f'{a}'
'some_string'
string.format
についても同じことが言えます。デフォルトはstr
です。
>>> '{}'.format(a)
'some_string'
>>> '{!s}'.format(a)
'some_string'