X-Git-Url: http://iramuteq.org/git?p=iramuteq;a=blobdiff_plain;f=parse_factiva_txt.py;h=9cb2af2dc44be3916df86226543b7fb6b0c51f38;hp=53f6d6dad575ee4fd5173e23c94c487ff282c79f;hb=0f8b4705852de1679aba3e91c9809fe2250a715c;hpb=be2de22859c8f59abe9e1082981e4c3a62e9b7ca diff --git a/parse_factiva_txt.py b/parse_factiva_txt.py index 53f6d6d..9cb2af2 100644 --- a/parse_factiva_txt.py +++ b/parse_factiva_txt.py @@ -1,66 +1,73 @@ #!/bin/env python # -*- coding: utf-8 -*- #Author: Pierre Ratinaud -#Copyright (c) 2012 Pierre Ratinaud +#Copyright (c) 2012-2013 Pierre Ratinaud #Lisense: GNU/GPL import os import codecs -txtdir = 'dev/factiva_txt' #repertoire des textes -#txtdir = 'corpus/jeunesdebanlieues' -fileout = 'dev/factiva_txt_out.txt' -encodage_in = 'utf8' -encodage_out = 'utf8' +#txtdir = 'dev/factiva_txt' +#fileout = 'dev/factiva_txt_out.txt' +#encodage_in = 'utf8' +#encodage_out = 'utf8' -def parsetxt(txt): +def parsetxtpaste(txt): """ parser de texte pour factiva + à partir d'un copier/coller de la fenêtre de visualisation + merci à Lucie Loubère pour l'astuce :) """ no = ['NS','RE','IPD','CO','IN'] # les balises qui signalent une fin - txt = txt.splitlines() #met le texte dans une liste de lignes - txt.pop(0) # la premiere ligne sert a rien - txt = txt[0:(len(txt)-10)] # les dernieres lignes ne servent a rien + txt = txt.splitlines() keepline = False ucis = [] - for line in txt : #pour chaque ligne du texte... - if line.startswith('---------------------------------------------------------------') : # si la ligne commence avec... - ucis.append([['****'],'']) # c'est une nouvelle uci - keepline = False - elif line.startswith('SN ') : #source + for line in txt : + if line.startswith('Article') : + lp = line.split() + if len(lp) > 2 : + if lp[2] == 'Article' : + ucis.append([[u'****'],'']) + keepline = False + if line.startswith('SN ') : #source source = '*source_' + line[4:].replace(' ','').replace('\'','').replace(u'´','').replace(u'’','').replace('-','').lower() ucis[-1][0].append(source) elif line.startswith('PD ') : #date - mois_annee = '*date_' + line[4:].split(' ')[1] + line[4:].split(' ')[2] + mois_annee = '*ma_' + line[4:].split(' ')[1] + line[4:].split(' ')[2] ucis[-1][0].append(mois_annee) - elif line in no : #fin + annee = u'*annee_' + line[4:].split(' ')[2] + ucis[-1][0].append(annee) + elif line.strip() in no : #fin keepline = False - elif line.startswith('RF ') : #fin + elif line.startswith('RF ') : #fin keepline = False - elif line in ['LP', 'TD'] : #debut texte + elif line.strip() in ['LP', 'TD'] : #debut texte keepline = True else : pass - if keepline and line not in ['LP', 'TD'] : + if keepline and line.strip() not in ['LP', 'TD', ''] : ucis[-1][1] = '\n'.join([ucis[-1][1],line]) return ucis def print_ucis(ucis, ofile, encodage) : - toprint = '\n'.join(['\n'.join([' '.join(uci[0]),uci[1]]) for uci in ucis]) + #elimination des articles vides + ucis = [uci for uci in ucis if uci[1].strip() != ''] + toprint = '\n\n'.join(['\n'.join([' '.join(uci[0]),uci[1]]) for uci in ucis]) ofile.write(toprint.encode(encodage)) -def doparse(txtdir, fileout, encodage_in, encodage_out): - files = os.listdir(txtdir) #liste des fichiers dans txtdir - with open(fileout,'w') as outf : #ouverture du fichier en sortie - for f in files : #pour chaque fichier en entree... - f= os.path.join(txtdir, f) #chemin du fichier - with codecs.open(f, 'r', encodage_in) as infile : #ouverture du fichier - content = infile.read() #lecture du fichier - ucis = parsetxt(content) - print_ucis(ucis, outf, encodage_out) +class ParseFactivaPaste : + def __init__(self, txtdir, fileout, encodage_in, encodage_out) : + files = os.listdir(txtdir) + with open(fileout,'w') as outf : + for f in files : + f= os.path.join(txtdir, f) + with codecs.open(f, 'rU', encodage_in) as infile : + content = infile.read() + ucis = parsetxtpaste(content) + print_ucis(ucis, outf, encodage_out) #for dat in ['2001','2002','2003','2004', '2005','2006','2007','2008','2009','2010','2011'] : # path = os.path.join(txtdir,dat)