Python で次のような行に出くわしました。
print "Let's talk about %s." % my_name
ただし、これら 2 つの出力が同等である Ruby のケースを見てきました。
print "Let's talk about #{my_name}."
print "Let's talk about %s." % my_name"
Pythonで同じ行を印刷する方法は1つしかありませんか?
Python には、いくつかの方法もあります。
print "let's talk about this %s" % my_name
print "let's talk about this {:s}".format(my_name)
print "let's talk about this", my_name
すべて同じ出力を生成します。ただし、古いスタイルよりも.formatメソッド (Python v 2.6 以降で使用可能) を使用することをお勧めします ( What's New in 3.0%
から引用するには: " ... % 演算子は引き続きサポートされています。Python 3.1 では非推奨になります。後で言語から削除されました。 ")
最後に、Python v3.x の時点でprint
は関数であるため、すべての print ステートメントには()
.
ruby では で囲まれた部分が{}
式です。Python には、このようにフォーマット文字列内の式を評価する方法がありません。
print "Let's talk about #{my_name}."
式が変数だけである単純なケースでは、使用できます
print "Let's talk about %(my_name)s"%{'my_name':my_name}
または、ここの他の回答で与えられた他の選択肢のいずれか。
推奨される方法は、format() を使用することです。例えば。
print "Let's talk about {my_name}".format(my_name=my_name)
私のお気に入りの 1 つは、値に辞書を使用することです。
>>> values = {"name": "john"}
>>> print "Let's talk about {name}".format(**values)
Let's talk about john
文字列を連結することもできます。これはPythonicではなく、出力の最終的な外観を制御することはできませんが、一部の非プログラマーはこれを読みやすいと感じるようです(特定の計算について議論している場合など):
print "Let's talk about " + str( my_name )
str() 関数は必要な場合とそうでない場合がありますが、TypeError を取得せずに他のデータ型 (整数など) を追加できます。
string.format() と % の詳細については、次の古い投稿を参照してください: Python 文字列の書式設定: % と .format
ここでの他の回答に加えて、Python での生活の中で発見するのに時間がかかりすぎたマッピング キーもあります。
>>> '%(foo)s' % {'foo': 'bar'}
'bar'
シバン全体のString Formatting Operationsをご覧ください。