2016-11-15 1 views
0

「そこに」という文字列があり、正確な/完全な単語を検索したいと思います。この場合、「the」は一度だけ表示されます。しかし、index()やfind()メソッドを使うと、 "then"や "there"と部分一致するので、3回出現すると考えられます。私はこれらの方法のいずれかを使用するのが好きです。インデックスまたは検索方法を使用した正確な単語の一致 - Python

>>> s = "the then there" 
>>> s.index("the") 
0 
>>> s.index("the",1) 
4 
>>> s.index("the",5) 
9 
>>> s.find("the") 
0 
>>> s.find("the",1) 
4 
>>> s.find("the",5) 
9 
+4

は正規表現 '\ bthe \ b'を使用します –

答えて

1

最初にstr.split()を使用して文字列を単語リストに変換してから検索してください。

import re 

test_str = "when we came here, what we saw that the then there the" 
search_str = 'the' 
m = re.search(r'\b'+ re.escape(search_str) +r'\b', test_str, re.IGNORECASE) 
if m: 
    pos = m.start() 
    print(pos) 

出力:

>>> s = "the then there" 
>>> s_list = s.split() # list of words having content: ['the', 'then', 'there'] 
>>> s_list.index("the") 
0 
>>> s_list.index("then") 
1 
>>> s_list.index("there") 
2 
+0

パフォーマンスは非常に大きなファイルになる可能性があるため、巨大なリストを作成することを避けようとしているため、私のユースケースの問題です... – user3806770

+0

とにかく巨大なファイルです。どちらかを 'str'または' list'として格納する必要がありますが、どこかに格納する必要があります。右?コンテンツを文字列として読み込み、リストを作成します。スペースを節約することにもっと興味があれば。あなたがリストを取得した後、その単語の最初の出現のインデックスとしてキーと値として単語を持つ辞書に変換します。文字列とリストを格納する変数のように、使用されていない変数を明示的に削除する –

関連する問題