2017-09-03 36 views
0

我得到了下面的代码,应在其他功能使用,所以我想用一个变量分配表达式的变量,并用它在另一个功能

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

这可能是一个好主意,详细解释你正试图归档的东西。 –

+0

我有一个很大的功能,除了这个表达式之外,它可以应用到不同的网站上。这就是为什么我想把所有东西都放在一个函数中,并且只能通过scraping语句,这对每个网站都是不同的。 – user2252633

+0

然后你应该有一个基类,子类覆盖一个函数。 –

回答

1

使用拉姆达:

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

谢谢。 Lamdba似乎在我的旅程中经常地学习python。有什么好的资源可以为初学者学习吗?有一个很难理解这是做什么.. – user2252633

+0

@ user2252633 lambda是有用的东西之一,如果你确定知道如何使用它)https://docs.python.org/3/tutorial/controlflow.html#lambda - 表达式 –

1

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

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

但是,如果你需要应用的功能是有部分固定的元素,你应该只使用partialfunctools,不是这个特设有eval。 使用partial可以修复常用参数并传递其他每个调用中不常见的其他参数。

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) 
+0

问题是关于变量:)但是这个变体也可以肯定 –

+0

@JeffersonH​​oup'textFormat'是一个变量,你可以将它传递给另一个函数,像这样'func(textFormat)' –

+0

@JeffersonH​​oup看到更新 –

相关问题