1

リスト内の単語のリストself.termsと文字列がありますline。リスト内の用語のいずれかが含まれている場合は、lineそれらをファイルに書き出したいと思いますterms_file

any()以下のように使用しましたが、これはブール値を返します。

any(terms_file.write(term) for term in self.terms if term in line)

ファイルに書き出すにはどうすればよいですか?ラムダを追加しようとしましたが、あまり詳しくなく、うまくいきませんでした。いくつかの構文エラーが発生しましたが、いくつかの変更の後、False再び返されました。

を使用してこれを行うことは可能any()ですか?

4

2 に答える 2

4

ここでは使用しないany()でください。戻り値も使用しません。

一致するすべての用語を記述するには、次を使用します。

terms_file.write(''.join(term for term in self.terms if term in line))

ただし、通常のループを使用する方がよいでしょう。読みやすさが重要です!

for term in self.terms:
    if term in line:
        terms_file.write(term)

any()テストのブール結果について知りたい場合にのみ使用してください。any()最初の値が見つかったときに反復を停止しTrueます。あなたの場合は returnであるため、遭遇することさえなく、常にreturnになりterms_file.write()ます。NoneTrueFalse

于 2013-04-02T13:21:45.447 に答える