1. ホーム
  2. パイソン

[解決済み】Pythonで文字列がリストの要素を含むかどうかをチェックする方法

2022-03-26 09:17:14

質問

このようなものがあります。

extensionsToCheck = ['.pdf', '.doc', '.xls']

for extension in extensionsToCheck:
    if extension in url_string:
        print(url_string)

Pythonでこれを行うには(forループを使わないで)よりエレガントな方法は何だろうかと疑問に思っています。私はこのような(C/C++からのような)ものを考えていたのですが、うまくいきませんでした。

if ('.pdf' or '.doc' or '.xls') in url_string:
    print(url_string)

Edit: 重複の可能性があるとしてマークされている下の質問とどう違うのか、ちょっと説明する必要に迫られています(だから閉じられないんだと思います)。

その違いは、私はある文字列がある文字列のリストの一部であるかどうかをチェックしたかったのに対し、もう一つの質問はある文字列のリストの中の文字列が他の文字列の部分文字列であるかどうかをチェックすることです。似たようなものですが、全く同じではありませんし、オンラインで答えを探しているときには意味論が重要です。この2つの質問は、実際には互いに反対の問題を解決しようとしています。しかし、どちらも解決策は同じであることがわかります。

どのように解決するのか?

ジェネレータと any で短絡させる。

if any(ext in url_string for ext in extensionsToCheck):
    print(url_string)

EDITです。 この回答はOPさんに受け入れられているようですね。私の解決策は彼の特定の問題に対する十分な解決策であり、リスト内の文字列が他の文字列に含まれているかどうかをチェックする一般的な方法ですが、この解決策が行うことはこれだけだということを覚えておいてください。 文字列の末尾など、どこで見つかったかは気にしない。 . もしこれが重要であれば、@Wladimir Palant の回答を見てください。