我得到了以下代码,应该在另一个函数中使用,所以我想使用变量传递它
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)
谢谢!
答案 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)