7

Pythonで文字列の書式設定を行うと、%s数値も文字列に変換されることに気付きました。

>>> a = 1
>>> b = 1.1
>>> c = 'hello'
>>> print 'Integer: %s; Float: %s; String: %s' % (a, b, c)
Integer: 1; Float: 1.1; String: hello

他の変数タイプについてはわかりませんが、%sこのように使用しても安全ですか?

毎回常に型を指定するよりも確かに速いです。

4

4 に答える 4

15

%s変数を自動的に呼び出すを使用strします。すべてが__str__定義されているので、問題なくこれを実行できるはずです(つまり、例外は発生しません)。しかし、実際に印刷するのは別の話です...

新しいPythonコードには、このformatメソッドを使用する別のオプションがあることに注意してください。

'Integer: {}; Float: {}; String: {}'.format(a,b,c)

これは基本的に同じように機能しますが、構文を習得するとより強力になります。

于 2013-01-24T16:46:14.523 に答える
5

はい、それはまさにその%s 意味です; 引数を文字列に変換して補間します。

値をさまざまなタイプの表現に変換するなど%d、他の形式の変換を指定することもできます。%f詳細については、文字列のフォーマット操作を参照してください。

別の方法として、Python 2.6以降では、次のメソッドを使用して別の形式の文字列フォーマットを使用することもできます.format()

print 'Integer: {0}; Float: {1}; String: {2}'.format(a, b, c)

このメソッドは、オブジェクトの属性、マッピング内のキー、または値を参照するためのリスト内のインデックスを参照するなど、いくつかの追加機能を提供します。

于 2013-01-24T16:46:27.280 に答える
1

もう 1 つのオプションは、同じように動作する新しいスタイルの文字列書式を使用することです。

>>> 'integer: {} float: {} string: {}'.format(1, 1.1, 'blah')
'integer: 1 float: 1.1 string: blah'

str(obj)ただし、代わりにdoを書く代わりにできることも意味します。

>>> format(1)
'1'
>>> format(1.1)
'1.1'
>>> format('blah')
'blah'

そして、書式設定オプションを指定できます。

>>> format(12345, '>10,')
'    12,345'
于 2013-01-24T16:54:39.233 に答える
1

%s 以外の演算子がある理由は、操作対象のデータ型に特定の書式設定機能を提供するためです。

%s を使用すると、補間する値に対してstr ()を呼び出した結果だけが得られます。

したがって、 %s を使用すると、 str ()の出力に固執するため、値の表現を使用したい厳密なフォーマットに強制的に準拠させることができなくなります。

他の演算子を使用して、値の形式を指定できます。IE: おそらく、数値が必要とする実際の小数点以下の桁数に関係なく、文字列内のすべての浮動小数点数を小数点以下 2 桁で表現したい場合があります。この場合、%s ではうまくいきません。

于 2013-01-24T17:00:27.060 に答える