2014-04-23 3 views
0

J'essaye de traiter un fichier txt que j'ai créé de chansons et de genres, mais je ne sais pas comment dire à python ce qu'il faut rechercher. Le fichier txt est formaté comme ceci:Recherche de mots dans une ligne d'un fichier txt

  1. 7/28/2012

1,1. Lovin’ You Is Fun-Pays

[...]

1,100. Appelez-moi peut-être Pop-pop, dance-pop

[] 2. 7/27/2013

2.1. Couronne-hip hop

(entre parenthèses pas dans le fichier réel)

J'ai essayé d'écrire du code pour trouver certains mots dans les lignes, mais le code finds chaque ligne du fichier comme contenant toutes les chaînes que je le passe (même quand ce n'est évidemment pas le cas). Voici le code:

try: 
    infilehandle = open(afile, "r") 
    alllines = infilehandle.read().splitlines(False) 
    infilehandle.close() 
except: 
    alllines=None 
    print "Unable to read file {0}".format(afile) 
for aline in alllines: 
    if aline.find("Country"): 
     country_count += 1 
    if aline=="1. 7/28/2012" or "2. 7/27/2013" or "3. 4/27/2013" or "3. 4/27/2013": 
     continue 
    else: 
     continue 

Si le code a fonctionné comme je le voulais, il classer chaque ligne par le premier numéro sur la ligne, puis recherchez pour certaines chaînes et ajouter à un compte pour les chaînes. Est-ce possible?

Répondre

0

La recherche ne retourne pas un booléen. Il renvoie un int. En particulier, il renvoie -1 s'il ne trouve pas la chaîne.

Et comme jonrsharpe mentionne, vous utilisez également or incorrectement.

try: 
    infilehandle = open(afile, "r") 
    alllines = infilehandle.read().splitlines(False) 
    infilehandle.close() 
except: 
    alllines=None 
    print "Unable to read file {0}".format(afile) 
    exit(1) 
for aline in alllines: 
    if aline.find("Country") != -1: 
     country_count += 1 
    if aline=="1. 7/28/2012" or 
     aline=="2. 7/27/2013" or 
     aline=="3. 4/27/2013" or 
     aline=="3. 4/27/2013": 
     pass # I have no idea what you're trying to do here 
1

Vous devriez écrire:

if aline.find("Country") != -1: 

ou mieux encore serait

if "Country" in aline: 

En outre, votre seconde si devrait lire:

if aline=="foo" or aline=="bar" or aline=="zom": 
Questions connexes