0

だから私は次のものを持っています:

myString = "This is %s string. It has %s replacements."
myParams = [ "some", "two" ]

# This is a function which works (and has to work) just like that
myFunction(myString, myParams)

デバッグするときは、次のようにします。

print("Debug: myString = " + myString)
print("Debug: myParams = " + myParams)

しかし、次のように、すべてを1つの印刷で直接取得したいと思います。

"Debug: This is some string. It has two replacements."

それはどういうわけか可能ですか?何かのようなもの

print("Debug: myString = " + (myString % myParams))

?

4

3 に答える 3

5

タプルを使用する必要があります。リストをタプルにキャストすると、うまく機能します。

>>> myString = "This is %s string. It has %s replacements."
>>> myParams = [ "some", "two" ]
>>> myString % tuple(myParams)
'This is some string. It has two replacements.'

最初にタプルになるように定義myParamsします。

>>> myString = "This is %s string. It has %s replacements."
>>> myParams = ("some", "two")
>>> myString % myParams
'This is some string. It has two replacements.'

それを関数に組み合わせることができます:

def myFunction(myString, myParams):
    return myString % tuple(myParams)

myFunction("This is %s string. It has %s replacements.", ("some", "two"))

またはさらに良いのは、myParams常にタプルに解決されるキャッチオール引数を作成することです。

def myFunction(myString, *myParams):
    return myString % myParams

myFunction("This is %s string. It has %s replacements.", "some", "two")

後者は、logging.log()関数 (および関連する関数) が既に行っていることです。

于 2013-08-14T10:04:42.173 に答える
0

必要なものを実現するための最も基本的な印刷構文は次のとおりです。

print "これは %s 文字列です。%s 置換があります。" %("一部", "2")

ある種の関数 (他の人が以前に回答したものなど) にフォーマットすることもできますが、最も基本的な印刷構文を知ることには価値があると思います。

文字列内の %s は、タプル内に格納された値のプレースホルダーとして機能します。

フロート (%f) など、他のプレースホルダーを使用することもできます。


参考までに、Python 3 以降では、より新しい (そしてよりクリーンな) 印刷形式があります。

于 2013-08-14T11:18:28.827 に答える