2011-11-13 5 views
0

私はこれを思考していると確信していますが、単純な結果があります。Python - 行内の単語を検索する、それを数える、それを追加する

私は一種の検索方法を探しています。私は、Pythonスクリプトがキーワードのためのテキストファイルを検索し、それが現れる行数を数えたいと思います。キーワードが1行に複数回表示されても、それを1回だけカウントしたいと思います。

ロングストーリーショート;キーボードが1行で表示されたら、その行を数えて数学の式に追加します。

ご協力いただきありがとうございます。前もって感謝します。

+0

この問題のどの部分に問題がありますか? – Johnsyweb

答えて

2

+0

パーフェクト!私は遠く離れていないことを知っていた。あなたは大きな助けとなりました。ありがとう。 :) – Dustin

0

非PythonのUnixのソリューションはかなり即時です:

  • 「キーワードのテキストファイルを検索するには、」grepの
  • トイレ
  • である「どのように多くの行数」であります

これらのいずれかの本質をPythonで実装するのは難しいですか?あなたは次の関数を定義することができ

def kwdCount(textContent, keyword): 
    lines=textContent.split("\n") 
    count=len([1 for line in lines if line.find(keyword)!=-1]) 
    return count 

>>> yourTextFile="hello world\n some words here\n goodbye world" 
>>> kwdCount(ourTextFile,"world") 
    2 
+0

私はそれらのことを考えていましたが、残念なことにWindowsシステム上で動作していて、それに代わるものがあるかどうかわかりませんでした。さらに、私はできるだけ「Python Only」の近くに置こうとしています。しかし、ありがとう! – Dustin

0

おそらく、あなたはこれを試みることができます。

def lcount(keyword, fname): 
    with open(fname, 'r') as fin: 
     return sum([1 for line in fin if keyword in line]) 

今、あなたは「foo.cpp」で「INT」を含む行の数を知りたい場合は、あなたが実行します。

print lcount('int', 'foo.cpp') 

あなたはコマンドラインで実行できる代替(もしあなたは)適切なプラットフォーム上にある次のとおりです。

grep int foo.cpp | wc -l 
0

と仮定すると、fはファイルオブジェクトで、

lines = f.readlines() 
print len([line for line in lines if keyword in line]) 
関連する問題