2017-09-03 26 views
0

をそれを使用する私は別の関数で使用されるべきである以下のコードを、得たので、私は変数に式を割り当て、別の関数に

textFormat = "soup.find("div", {"class" : "article-entry text"}).text.replace('\n', "")" 
を使用して、変数

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

を使用して、それを通過したいです

は明らかに機能しません。私は文字をエスケープする必要がありますか?どうやって?

どのような方法でtextFormatのコンテンツを実行するのが最適でしょうか。そのようです?

text = exec(textFormat) 

ありがとうございます!

+0

あなたがアーカイブしようとしていることを詳細に説明することは良い考えです。 –

+0

私は大きな機能を持っています。これは、この表現を除いて、掻き取りのために異なるウェブサイトに適用することができます。これは、すべての機能を1つの機能にまとめ、すべてのWebサイトで異なる擦り切れステートメントを渡したいからです。 – user2252633

+0

次に、サブクラスが1つの機能を上書きする1つの基本クラスが必要です。 –

答えて

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 -expressions、 –

1

。さらに、生の文字列を使用して、他の文字をエスケープする必要があります。だから... ...:あなたは部分的要素を固定しているされた関数を適用する必要がある場合

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

しかし、あなただけのevalfunctools、ないこのアドホックからpartialを使用する必要があります。 partialを使用すると、共通の引数を修正し、すべての呼び出しで共通ではないものを渡すことができます。

1

あなたはこのような別の関数でそれをラップすることができます:あなたは別の関数に渡したい場合は

text = textFormat() 

:このようにそれを使用すると

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

def func(another_func): 
    return another_func() 

func(textFormat) 
+0

質問は、変数についてだった:)しかし –

+0

@JeffersonH​​oup 'textFormat'は可変であり、あなたは' –

+0

更新を参照してください –

関連する問題