2017-01-06 5 views
0

おはよう。私はPythonには新しく、別のhtmlファイルにある正確なキーワード(長い文字列でも可)をテキストファイルから検索するコードを探しています。例:keyword.txtおよびdata.html現在のところ、正確な文の一致ではなく、最初の単語と一致するだけです。Python:2つのファイルから正確な文章を見つけてください

マイキーワードファイルが含まれています

Hello welcome 
Hello welcome to this page 
Hello world 

私のデータファイルが含まれています。それは返す必要があり、この条件のため

Hello 
hello good day 

:マッチしないが、現在、それは戻っています「が見つかりマッチ」。

また、すべてのキーワードがhtmlページに対して1行ずつ検索されるようにする方法。

本当に感謝します。前もって感謝します。

私の現在のコード:re.findall(r'\w+', open(keyfile , "r").readline()))から

import re 

keyfile = 'keyword.txt' 
testfile = 'data.txt' 
keys = set(key.lower() for key in 
    re.findall(r'\w+', open(keyfile , "r").readline())) 
with open(testfile) as f: 
    for line in f: 
     words = set(word.lower() for word in re.findall(r'\w+', line)) 
     if keys & words: 
      print "match found" 
+0

@Kalaireas正しい場合はコードのインデントを確認してください。 – MYGz

+0

'if keys&words:'は 'keys'と' words'の共通部分を見つけ、それが空でないかどうかを調べます。あなたのキーファイルの全行の内容を一致させたいのですか? –

+0

@PatrickHaugh、はい、キーファイルの内容(行単位)とデータファイルの完全一致を探したいと思います。たとえば、行のいずれかがdata.htmlファイルと一致する場合は、「一致」を出力する必要があります。 – Kalaireas

答えて

0

変更線6はopen(keyfile , "r"))keyセットだけでなく、単語に全体のラインを配置することにします。また、一致する部分を変更して線に合わせる必要があります。

だからあなたのコードは次のようになります。あなたの問題を解決する必要があり

import re 

keyfile = 'keyword.txt' 
testfile = 'data.txt' 
keys = set(key.lower() for key in 
    open(keyfile , "r")) 
with open(testfile) as f: 
    for line in f: 
     if line.lower() in keys: 
      print "match found" 

+0

実際にはそうではないように見えますが、それは同じ単語をキャプチャしていません。 – Kalaireas

+0

'keys'定義は閉じられていないファイルハンドルをリークします。 –

関連する問題