4

この質問の逆 (リスト内の文字列を見つける) は非常に人気があるため、質問に対する答えを見つけることができませんでした。

black_list = ["ab:", "cd:", "ef:", "gh:"]

for line in some_file:
    if ":" in line and black_list not in line:
        pass

これは明らかに機能しません。true/false を返すリストの繰り返しが必要ですが、それをエレガントに達成する方法がわかりません。ありがとう。

4

3 に答える 3

0

あなたのコード例は、文字列だけでなく、ファイル内の要素を探しているように見えます。とにかく、組み込みany()関数で両方を行うことを示す、次のようなことを行うことができます。

def check_string(text, word_list):
    return any(phrase in text for phrase in word_list)

def check_file(filename, word_list):
    with open(filename) as some_file:
        return any(check_string(line, word_list) for line in some_file)

black_list = ["ab:", "cd:", "ef:", "gh:"]

print check_file('some_file.txt', black_list)
于 2013-07-23T00:48:29.073 に答える