2017-10-18 13 views
0

J'ai deux fichiers texte: un avec le texte d'un article, et l'autre avec une liste de phrasal verbs. J'essaie de trouver chaque instance de chaque verbe phrasal dans l'article. Je sais que l'article contient le verbe phrasal "log on", ainsi que la liste verbale phrasal. Quand je fais une boucle dans les verbes à particule et que je recherche chacun d'eux en utilisant re.findall(), il n'en trouve pas. Lorsque je lance manuellement la boucle à la ligne 1199 de la liste des verbes à particule, qui se trouve être le mot "se connecter", il le trouve. Quand je commence juste une ligne plus tôt, à la ligne 1198, il ne la trouve pas. Voici mon code:re.findall() ne peut pas trouver les lignes d'un fichier dans un autre fichier

import re 
PV_HI = [] 
file = open('article.txt') 
for line in open('phrasalVerbs.txt'): 
    pv = line.strip() 
    pvFound = re.findall(pv, file.read(), flags=re.I) 
    PV_HI.extend(pvFound) 
print(PV_HI) 

Voici un échantillon des verbes phrasal fichier texte de la liste:

Lock onto 
Lock out 
Lock up 
Lock away 
Log in 
Log into 
Log off 
Log on 
Log out 
Look after 
Look back 
Look down on 
Look for 
Look forward to 
Look in 
Look in on 
Look into 

Et un échantillon du fichier article:

<p> If you have a business account, a higher Pay Anyone limit up to $500,000 and also have a Security Device to authorise third party payments and/or can add Operators, you are an ANZ Internet Banking for Business customer. 
<p> How do I manage my accounts once I am registered for ANZ Internet Banking? 
<p> If you have registered for ANZ Internet Banking, use your CRN and password to log on to ANZ Internet Banking. 
<p> If you need help while logged on to ANZ Internet Banking, click the " Help " icon in the top right hand corner of all pages. 

En fin de compte, ce que je suis essayer de faire est d'obtenir un compte de tous les verbes à particule dans un ensemble de 1600 fichiers. S'il y a une meilleure façon de faire cela, je suis certainement ouvert aux suggestions.

Merci!

Matt

Répondre

0

Je sauver votre échantillon des verbes et le fichier syntagmatiques article (ajouter « Connectez-vous » caractères à la fin à trouver), puis utilisez votre code python pour faire quelques tests. Au début, je ne peux pas trouver de résultat aussi. Mais quand je change les codes comme ci-dessous:

import re 
PV_HI = [] 
with open('article.txt', 'r') as f: 
    article_content = f.read() 
    for line in open('phrasalVerbs.txt'): 
     pv = line.strip() 
     pvFound = re.findall(pv, article_content, flags=re.I) 
     PV_HI.extend(pvFound) 
    print(PV_HI) 

Cela fonctionne et trouve avec succès «se connecter». J'espère que cela aide.

+0

Wow! C'est génial, merci beaucoup! J'ai pensé que je noterais que quand je commente 'article_content = f.read()' et que j'utilise 'f.read()' comme argument de chaîne pour 're.findall()', ça ne marche pas, donc assigner ' f.read() 'à une variable est crucial ici. Merci encore! – MattR

+0

Heureux que ça a aidé! :RÉ –