回答:
これらは文字列のフォーマットに使用されます。%s
文字列%d
のプレースホルダーとして機能し、数値のプレースホルダーとして機能します。関連する値は、%
演算子を使用してタプルを介して渡されます。
name = 'marcog'
number = 42
print '%s %d' % (name, number)
印刷されますmarcog 42
。名前は文字列(%s)であり、数値は整数(10進数の場合は%d)であることに注意してください。
詳細については、https://docs.python.org/3/library/stdtypes.html#printf-style-string-formattingを参照してください。
Python 3では、例は次のようになります。
print('%s %d' % (name, number))
%d
10進整数用
%s
汎用の文字列またはオブジェクト用で、オブジェクトの場合は文字列に変換されます
次のコードを検討してください
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
れ、浮動小数点%g
数として印刷され、一般的な数値に使用されます
明らかに
print('%d' % (name))
例外を生成します。文字列を数値に変換することはできません
%s
代わりに数値に使用するとどうなるかを説明します。
これらはプレースホルダーです:
例えば: 'Hi %s I have %d donuts' %('Alice', 42)
このコード行では、%sをAlice(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
たとえば、16進数の値を10進数に変換できます。
>>> '%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
は文字列と%d
機能し、数値または10進変数。
印刷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
も同様の方法で使用します。でオペレータに格納されているテキスト文字列に置き換えられます変数。丸括弧はPython 3のエラーメッセージを防ぎますprint('description: %s' % descrip)
%s
descrip