2011-09-14 15 views
1

単語とその索引を検索したいが、単語がファイル内に複数の時刻で表示されている間は、最初の位置しか取得できない。ファイルの内容は、Pythonを使用してASCIIファイルで単語を検索する方法

ある[DATA MAKE:STUDENT1 = AENIE:AGE14、STUDENT2 = JOHN:AGE15、STUDENT3 = KELLY:AGE14、STUDENT4 = JACK:AGE16、STUDENT5 = SNOW:AGE16; SET RECORD:STUDENT1 = GOODを、STUDENT2 =、STUDENT3 = BAD、STTUDENT4 =、STUDENT5 = GOOD]

次は私のコードは、その唯一の第一インデックス位置を与えながら、ここで単語 "STUDENT1" は、2つの時間を表示され、

import sys,os,csv 
    x = str(raw_input("Enter file name :")) + '.ASCII' 
    fp = open(x,'r') 
    data = fp.read() 
    fp.close() 
    found = data.find("STUDENT1") 
    print found 

私のコードです。私は2番目のインデックス位置も欲しい。同様に単語がファイル内に何度も出現する可能性がありますので、どのようにインデックスのすべての位置を見つけることができますか?

答えて

0

は前回の試合後に開始、再び文字列を検索するstr.find()にオプションのstartパラメータを使用します。

found = data.find("STUDENT1") 
while found != -1: 
    print found 
    found = data.find("STUDENT1", found+1) 

それはfound+len("STUDENT1")代わりのfound+1を使用するように、わずかに、より効率的(あまり簡潔)になります。

別の方法としては、re.finditer()を使用することができます。

import re 
for match in re.finditer("STUDENT1", data): 
    print match.start() 
+0

私の答えは、ソリューションとしてそれを受け入れるために、次の私の答えにチェックマークのアウトラインをクリックして助けた場合、 – Marium

+0

そんなに問題ありませんがお願いします。 –

+0

もう一度感謝しました – Marium

関連する問題