Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何通过函数将多个字符串传递给str.format()_Python_String_Python 2.7 - Fatal编程技术网

Python 如何通过函数将多个字符串传递给str.format()

Python 如何通过函数将多个字符串传递给str.format(),python,string,python-2.7,Python,String,Python 2.7,下面的my_xpath应用str.format有什么问题 def look_for(thing, value): my_xpath = "//h2[. = '{thing_placeholder}']/following::table//td[. = '{value_placeholder}']" my_xpath.format(thing, value) return my_xpath look_for("MyThing", "MyValue") …它不起作用,而是

下面的
my_xpath
应用
str.format
有什么问题

def look_for(thing, value):
    my_xpath = "//h2[. = '{thing_placeholder}']/following::table//td[. = '{value_placeholder}']"
    my_xpath.format(thing, value)
    return my_xpath

look_for("MyThing", "MyValue")
…它不起作用,而是在应用
my_xpath
查找web元素时抛出
KeyError

或者,如果我尝试此变体,它不会抱怨KeyError,但我会得到
None
返回:

def look_for_v2(thing, value):
    my_xpath = "//h2[. = '{thing_placeholder}']/following::table//td[. = '{value_placeholder}']"
    my_xpath.format(thing_placeholder = thing, value_placeholder = value)
    return my_xpath

look_for_v2("MyThing", "MyValue")

查看文档以了解更多信息

根据文档,我们应该传递基于键值的参数或字典:

str.format(*args,**kwargs)


字符串是不可变的,
str.format
创建一个新字符串并返回它,它不会修改原始字符串。必须将格式指定给新字符串并返回它或其他内容。除此之外,你的第二条路是正确的

my_new_xpath = my_xpath.format(thing_placeholder = thing, value_placeholder = value)

你在函数sok中缺少了返回语句,只是认为“不返回”可能就是因为这个原因,谢谢你的帮助。是的,现在回想起来,这是很明显的。我的错误是看示例并假设它们是完整的行。
my_new_xpath = my_xpath.format(thing_placeholder = thing, value_placeholder = value)