2017-09-03 34 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看到更新 –

相關問題