2011-09-14 7 views
1

Je veux trouver un mot et son index mais le problème est que je ne reçois sa première position que lorsque le mot apparaît plus d'une fois dans le fichier. Le contenu du fichier est,comment trouver un mot en fichier ASCII en utilisant python

[FAIRE DES DONNÉES: STUDENT1 = AENIE: AGE14, Etudiant2 = JOHN: Âge15, STUDENT3 = KELLY: AGE14, STUDENT4 = JACK: AGE16, STUDENT5 = NEIGE: AGE16; SET RECORD: STUDENT1 = BON , Etudiant2 =, STUDENT3 = BAD, STTUDENT4 =, STUDENT5 = BON]

suivant est mon code,

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 

ici le mot "STUDENT1" apparaît deux fois alors que mon code donne sa seule 1ère position d'index . Je veux aussi sa deuxième position d'index. De même, un mot peut apparaître plusieurs fois dans le fichier, alors comment puis-je trouver sa position d'index?

Répondre

0

Utilisez le paramètre de démarrage facultatif à str.find() pour rechercher la chaîne de recommencer après le match précédent:

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

Il serait un peu plus efficace (mais moins concise) à utiliser found+len("STUDENT1") au lieu de found+1.

Sinon, vous pouvez utiliser le re.finditer():

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

Merci beaucoup – Marium

+0

Pas de problème, si ma réponse a aidé à cliquer sur le contour de la coche à côté de ma réponse à l'accepter comme la solution. –

+0

je l'ai fait merci encore – Marium

Questions connexes