1. ホーム
  2. python

[解決済み] 文字列から単語のリストを削除する

2022-02-07 22:39:17

質問

ストップワードのリストがあります。そして、検索文字列があります。私は文字列から単語を削除したい。

例として

stopwords=['what','who','is','a','at','is','he']
query='What is hello'

このコードでは、'What' と 'is' が取り除かれるはずです。しかし私の場合、'a'と'at'が除去されてしまいます。以下に私のコードを示します。何が間違っているのでしょうか?

for word in stopwords:
    if word in query:
        print word
        query=query.replace(word,"")

入力クエリが "What is Hello" の場合、次のような出力が得られます。
wht s llo

なぜこのようなことが起こるのでしょうか?

解決方法は?

これは一つの方法です。

query = 'What is hello'
stopwords = ['what', 'who', 'is', 'a', 'at', 'is', 'he']
querywords = query.split()

resultwords  = [word for word in querywords if word.lower() not in stopwords]
result = ' '.join(resultwords)

print(result)

小文字の異形語がリストにある場合にも単語を削除したいことに気づいたので、そのために lower() を条件チェックに追加しました。