2 # -*- coding: utf-8 -*-
3 #Author: Pierre Ratinaud
4 #Copyright (c) 2012 Pierre Ratinaud
11 txtdir = 'dev/factiva_txt' #repertoire des textes
12 #txtdir = 'corpus/jeunesdebanlieues'
13 fileout = 'dev/factiva_txt_out.txt'
20 parser de texte pour factiva
22 no = ['NS','RE','IPD','CO','IN'] # les balises qui signalent une fin
23 txt = txt.splitlines() #met le texte dans une liste de lignes
24 txt.pop(0) # la premiere ligne sert a rien
25 txt = txt[0:(len(txt)-10)] # les dernieres lignes ne servent a rien
28 for line in txt : #pour chaque ligne du texte...
29 if line.startswith('---------------------------------------------------------------') : # si la ligne commence avec...
30 ucis.append([['****'],'']) # c'est une nouvelle uci
32 elif line.startswith('SN ') : #source
33 source = '*source_' + line[4:].replace(' ','').replace('\'','').replace(u'´','').replace(u'’','').replace('-','').lower()
34 ucis[-1][0].append(source)
35 elif line.startswith('PD ') : #date
36 mois_annee = '*date_' + line[4:].split(' ')[1] + line[4:].split(' ')[2]
37 ucis[-1][0].append(mois_annee)
38 elif line in no : #fin
40 elif line.startswith('RF ') : #fin
42 elif line in ['LP', 'TD'] : #debut texte
46 if keepline and line not in ['LP', 'TD'] :
47 ucis[-1][1] = '\n'.join([ucis[-1][1],line])
51 def print_ucis(ucis, ofile, encodage) :
52 toprint = '\n'.join(['\n'.join([' '.join(uci[0]),uci[1]]) for uci in ucis])
53 ofile.write(toprint.encode(encodage))
55 def doparse(txtdir, fileout, encodage_in, encodage_out):
56 files = os.listdir(txtdir) #liste des fichiers dans txtdir
57 with open(fileout,'w') as outf : #ouverture du fichier en sortie
58 for f in files : #pour chaque fichier en entree...
59 f= os.path.join(txtdir, f) #chemin du fichier
60 with codecs.open(f, 'r', encodage_in) as infile : #ouverture du fichier
61 content = infile.read() #lecture du fichier
62 ucis = parsetxt(content)
63 print_ucis(ucis, outf, encodage_out)
65 #for dat in ['2001','2002','2003','2004', '2005','2006','2007','2008','2009','2010','2011'] :
66 # path = os.path.join(txtdir,dat)
67 # outfile = os.path.join(txtdir, 'corpus_' + dat + '.txt')
68 # doparse(path, outfile)
71 if __name__ == '__main__' :
72 doparse(txtdir, fileout, encodage_in, encodage_out)