1

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つしかありませんか?

4

5 に答える 5

6

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 ステートメントには().

于 2012-05-30T01:30:37.347 に答える
2

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)
于 2012-05-30T02:08:23.230 に答える
0

私のお気に入りの 1 つは、値に辞書を使用することです。

>>> values = {"name": "john"}
>>> print "Let's talk about {name}".format(**values)
Let's talk about john
于 2012-05-30T02:30:35.103 に答える
0

文字列を連結することもできます。これはPythonicではなく、出力の最終的な外観を制御することはできませんが、一部の非プログラマーはこれを読みやすいと感じるようです(特定の計算について議論している場合など):

print "Let's talk about " + str( my_name )

str() 関数は必要な場合とそうでない場合がありますが、TypeError を取得せずに他のデータ型 (整数など) を追加できます。

string.format() と % の詳細については、次の古い投稿を参照してください: Python 文字列の書式設定: % と .format

于 2012-05-30T01:41:38.780 に答える
0

ここでの他の回答に加えて、Python での生活の中で発見するのに時間がかかりすぎたマッピング キーもあります。

>>> '%(foo)s' % {'foo': 'bar'}
'bar'

シバン全体のString Formatting Operationsをご覧ください。

于 2012-05-30T01:46:13.087 に答える