Je suis un débutant, été d'apprendre python pendant quelques mois comme mon premier langage de programmation. Je cherche un motif à partir d'un fichier texte. Ma première tentative a été utilisant l'expression rationnelle, qui fonctionne, mais a une limitation:Rechercher un motif dans un fichier texte à partir de plusieurs éléments dans plusieurs listes?
import re
noun_list = ['bacon', 'cheese', 'eggs', 'milk', 'list', 'dog']
CC_list = ['and', 'or']
noun_list_pattern1 = r'\b\w+\b,\s\b\w+\b,\sand\s\b\w+\b|\b\w+\b,\s\b\w+\b,\sor\s\b\w+\b|\b\w+\b,\s\b\w+\b\sand\s\b\w+\b|\b\w+\b,\s\b\w+\b,\saor\s\b\w+\b'
with open('test_sentence.txt', 'r') as input_f:
read_input = input_f.read()
word = re.findall(noun_list_pattern1, read_input)
for w in word:
print w
else:
pass
Donc, à ce stade, vous demandez peut-être pourquoi les listes dans ce code, car ils ne sont pas utilisés. Eh bien, je me suis creusé la cervelle, en essayant toutes sortes de boucles et si les déclarations dans les fonctions pour essayer de trouver une raison de répliquer le modèle regex, mais en utilisant les listes. La limitation avec regex est que le code \b\w+\w\
trouvé un certain nombre de fois dans `noun_list_pattern 'trouve seulement des mots - des mots - mais pas des noms spécifiques. Cela pourrait augmenter les faux positifs. Je veux réduire les choses plus en utilisant les éléments de la liste ci-dessus au lieu de l'expression rationnelle.
Depuis que j'ai 4 regex différentes dans le modèle regex (il contient 4 |
), je vais aller avec 1 d'entre eux ici. Donc, je dois trouver un motif tel que:
'noun in noun_list' + ', ' + 'noun in noun_list' + ', ' + 'C in CC_list' + ' ' + 'noun in noun_list
De toute évidence, la ligne cité code ci-dessus n'est pas vrai code python, mais est un experession de mes réflexions sur le match nécessaire. Où je dis noun in noun_list
Je veux dire une itération à travers la liste de noms; C in CC_list
est une itération à travers la liste CC_list; ,
est une correspondance de chaîne littérale pour une virgule et un espace.
Espérons que je me suis fait clair!
Voici le contenu du fichier test_sentence.txt
que j'utilise:
I need to buy are bacon, cheese and eggs.
I also need to buy milk, cheese, and bacon.
What's your favorite: milk, cheese or eggs.
What's my favorite: milk, bacon, or eggs.
Pourriez-vous mefficher un exemple des données que vous souhaitez suivre? – jrd1
oups! oui va faire, oublié à ce sujet. –
Etes-vous en train d'analyser la structure de chaque phrase et de regrouper les semblables? Si oui, vous voudrez peut-être essayer la bibliothèque nltk: http://nltk.org/ Ils ont aussi un document gratuit bien écrit (vient comme un livre) en tant que guide débutant. – Mai