2016-11-21 3 views
-1

特定の単語に対してファイルを1行ずつ検索したいが、この特定の単語の前にスペースがあることを確認したい。Pythonでスペースの前後にあるファイル内の単語を検索するにはどうすればよいですか?

私はregexを使ってこれを行う必要があることを知っています。私はthisガイドを読んできましたが、同じステートメントでlookaheadとlookbehindの両方を適用する方法を私に混乱させます。

どうすればいいですか?

counter = 0 
out = open('out.txt', 'w') 
with open(original_db, 'r') as db: 
    for line in db: 
     if re.search(word, line, re.IGNORECASE): 
      counter += 1 
      out.write(line) 
print("Entries found for word: " + str(counter)) 
+4

なぜ、行を分割して、結果のリストにその単語が存在するかどうかを確認してください。 –

+0

にサンプルラインを含めることはできますか? – MYGz

+0

詳細を入力してください。そうでない場合は、明確ではありません。それは、行の開始点/終了点にない場合にのみ "単語"に一致させたいということですか? –

答えて

5

あなたのパターンに、ワード境界アンカー、\bを追加することができます。単語文字(AZ、0-9または_文字が)前または後さ

if re.search('\b{}\b'.format(re.escape(word)), line, re.IGNORECASE): 

これらだけ試合を別の単語でないキャラクターによってこれは空白より広いです。句読点の前後にある単語も機能します。

空白で区切られた単語にのみ一致する必要がある場合は、正規表現を使用しないでください。空白で分割してください:

if word in line.lower().split(): 
+0

いつものように速すぎて素敵な答え:) –

+0

're.search( '\ b {} \ b'.format(re.escape(word))、line、re.IGNORECASE):'スプリッタは正常に動作しました。速やかなご返信ありがとうございます。 – Aventinus

+0

あなたの言葉で変数 'word'を埋めていたらうれしいですか? –

関連する問題