как найти слово в файле ASCII, используя python - PullRequest
1 голос
/ 14 сентября 2011

Я хочу найти слово и его индекс, но проблема в том, что я получаю только его первую позицию, когда слово появляется более одного раза в файле. Содержимое файла:

[СОЗДАТЬ ДАННЫЕ: STUDENT1 = AENIE: AGE14, STUDENT2 = ДЖОН: AGE15, STUDENT3 = КЕЛЛИ: AGE14, STUDENT4 = ДЖЕК: AGE16, STUDENT5 = СНЕГ: AGE16; ЗАПИСАТЬ ЗАПИСЬ: STUDENT1 = ХОРОШО, STUDENT2 =, STUDENT3 = BAD, STTUDENT4 =, STUDENT5 = ХОРОШО]

следующий мой код,

    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

здесь слово «STUDENT1» появляется два раза, в то время как мой код дает только первую позицию индекса. Я тоже хочу вторую позицию индекса. Точно так же слово может появляться в файле несколько раз, так как я могу найти всю позицию индекса?

1 Ответ

0 голосов
/ 14 сентября 2011

Используйте необязательный параметр запуска для str.find(), чтобы снова найти строку, начиная с предыдущего совпадения:

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()
...