2009-05-12 2 views
0

J'ai un dictionnaire. Je veux prendre uniquement les mots contenant un motif de mot simple (c'est-à-dire "vache") et les écrire dans un autre fichier. Chaque ligne commence par un mot, puis la définition. Je suis encore très nouveau au python, donc je n'ai pas une bonne compréhension de la syntaxe, mais le pseudocode dans ma tête ressemble à quelque chose comme:Comment filtrer un fichier en utilisant un modèle dans un autre fichier en utilisant Python?

infile = open('C:/infile.txt') 
outfile = open('C:/outfile.txt') 

pattern = re.compile('cow') 

for line in infile: 
    linelist = line.split(None, 2) 
    if (pattern.search(linelist[1]) 
    outfile.write(listlist[1]) 

outfile.close() 
infile.close() 

Je suis en cours d'exécution dans beaucoup d'erreurs, toute aide sera apprécié!

+1

La réponse de johannix est techniquement correct, mais vous ne devriez pas écrire votre propre programme, lorsque les outils existants comme grep existent déjà: grep '^ vache infile. txt> outfile.txt –

+0

Un "lot d'erreurs" n'est pas utile. Une erreur spécifique ou deux est utile. –

Répondre

2
import re 

infile = open('C:/infile.txt') 
outfile = open('C:/outfile.txt', 'w') 

pattern = re.compile('^(cow\w*)') 

for line in infile: 
    found = pattern.match(line) 
    if found: 
     text = "%s\n" % (found.group(0)) 
     outfile.write(text) 

outfile.close() 
infile.close() 
0

en utilisant 'avec open' et filtrer

import re 
pattern = re.compile('^(cow\w*)') 

with open(outfile,"w") as fw: 
    with open(infile,"r") as f: 
    for outline in filter(lambda x: not pattern.match(x.strip()),f): 
     fw.write(outline)