随后将替换插入%-string

Dro*_*ids 0 python

所以我有以下内容:

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)
Run Code Online (Sandbox Code Playgroud)

现在,当我调试时,我执行以下操作:

print("Debug: myString = " + myString)
print("Debug: myParams = " + myParams)
Run Code Online (Sandbox Code Playgroud)

但我想直接在一个印刷品中得到它,如:

"Debug: This is some string. It has two replacements."
Run Code Online (Sandbox Code Playgroud)

这有可能吗?就像是

print("Debug: myString = " + (myString % myParams))
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 5

你需要使用一个元组 ; 将您的列表转换为元组,并且工作得很好:

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

定义myParams为一个元组开头:

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

您可以将它组合成一个函数:

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

myFunction("This is %s string. It has %s replacements.", ("some", "two"))
Run Code Online (Sandbox Code Playgroud)

或者更好的是,制作myParams一个全能的论点,它总是解析为一个元组:

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

myFunction("This is %s string. It has %s replacements.", "some", "two")
Run Code Online (Sandbox Code Playgroud)

后者是logging.log()功能(和相关功能)已经完成的功能.