将表达式赋给变量并在另一个函数中使用它

时间:2017-09-03 08:51:25

标签: python

我得到了以下代码,应该在另一个函数中使用,所以我想使用变量传递它

soup.find("div", {"class" : "article-entry text"}).text.replace('\n', "")

使用

textFormat = "soup.find("div", {"class" : "article-entry text"}).text.replace('\n', "")"

显然不起作用。我必须逃脱角色吗?怎么样?

执行textFormat内容的最佳方法是什么。像这样?

text = exec(textFormat)

谢谢!

3 个答案:

答案 0 :(得分:1)

使用lambda:

soup_find = lambda x,y: soup.find(x,y).text.replace('\n', '')
soup_find("div", {"class" : "article-entry text"})

答案 1 :(得分:1)

您需要转义字符串被包围的引号。此外,你需要使用原始字符串,以逃避其他字符。所以...:

textFormat = r'soup.find("div", {"class" : "article-entry text"}).text.replace(\'\n\', "")' 

但是如果你需要应用具有部分固定元素的函数,你应该只使用 functools 中的partial,而不是使用eval。 使用partial可以修复常见参数并传递每次调用时不常见的其他参数。

答案 2 :(得分:1)

你可以将它包装在另一个函数中:

def textFormat():
    return soup.find("div", {"class" : "article-entry text"}).text.replace('\n', "")

然后像这样使用它:

text = textFormat()

如果你想将它传递给另一个函数:

def func(another_func):
    return another_func()

func(textFormat)