この質問にはすでに答えがあります。
実行を継続する方法はありますかtry
例外が発生したらブロックする?私はその答えはノーだと思いますが、次のコードは醜いと思います。
def preprocess(self, text):
try:
text = self.parser(text)
except AttributeError:
pass
try:
terms = [term for term in text if term not in self.stopwords]
text = list_to_string(terms)
except AttributeError:
pass
try:
terms = [self.stemmer.stem(term) for term in text]
text = list_to_string(terms)
except AttributeError:
pass
return text
これをpythonic形式で行う別の方法はありますか?
私はこのように書き直すでしょう:
def preprocess(self, text):
if hasattr(self, 'parser'):
text = self.parser(text)
if hasattr(self, 'stopwords'):
terms = [term for term in text if term not in self.stopwords]
text = list_to_string(terms)
if hasattr(self, 'stemmer'):
terms = [self.stemmer.stem(term) for term in text]
text = list_to_string(terms)
return text
私はそれが理解するのがはるかに簡単で、捕まえないと思うAttributeError
内部parser
そしてstem
呼び出し
try
セクション ? - ᴀʀᴍᴀɴtry
停止したため、続行する場所。唯一の解決策は、すべてのステートメントをで囲むことです。try
... - Willem Van Onsemfrom contextlib import suppress with suppress(AttributeError):
- Jean-François Fabre