Bonjour a tous

j'ai un fichier rempli de ce type de registres, chaque registre commence par =LDR:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
=LDR  00800ntm a2200229   4500
=001  199801568
=041  \\$aEspañol
=093  \\$a01/07/2013
=094  \\$aMASTER EXECUTIVE EN DIRECCION DE HOSPITALES Y EMPRESAS SANITARIAS
=096  \\$aRevisado
=100  10$aLópez Peña, Marta
=245  10$aDefinición de puestos de trabajo (funciones del personal no sanitario)
=260  \\$c1994
=337  \\$aDigital
=502  \\$bMaster en Dirección de Hospitales y Empresas Sanitarias$gGHE1
=590  \\$aDisponible sólo en formato digital
=650  \\$aGestión hospitalaria
=856  \\$uhttp://www.eada.net/servlets/obtenerFicheroBiblioteca?file=proyectos/199801568.pdf
=901  \\$aProyecto
=931  \\$aSÃ*
=942  \\$n0
=952  \\$w2013-07-29$p8$71$r2013-07-29$40$00$922112$bEADA$yPROJ$10$d2013-07-29$aEADA
=999  \\$c59605$d59605
 
=LDR  00796ntm a2200217   4500
=001  199801578
=094  \\$aMASTER EXECUTIVE EN DIRECCION DE HOSPITALES Y EMPRESAS SANITARIAS
=096  \\$aRevisado
=100  10$aBusturia, P. de
=245  10$aProceso de transformación del "Servicio de admisión" en un "Gabinete de gestión de pacientes"
=260  \\$c1994
=337  \\$aDigital
=502  \\$bMaster en Dirección de Hospitales y Empresas Sanitarias$gGHE1
=590  \\$aDisponible sólo en formato digital
=650  \\$aGestión hospitalaria
=856  \\$uhttp://www.eada.net/servlets/obtenerFicheroBiblioteca?file=proyectos/199801578.pdf
=901  \\$aProyecto
=931  \\$aSÃ*
=942  \\$n0
=952  \\$w2013-07-29$p9$71$r2013-07-29$40$00$922113$bEADA$yPROJ$10$d2013-07-29$aEADA
=999  \\$c59606$d59606
Je souhaite ajouter un champ =008 a partir de ce template
Code : Sélectionner tout - Visualiser dans une fenêtre à part
template = r"=008  130622s1999\\\\xxx|||||\||||\00|\0\eng\d"
Le but est de recuperer des valeurs de certains champs dans le registre et de les coller dans le =008
Concretement
=008 130622s1999\\\\xxx|||||\||||\00|\0\eng\d"

la valeur 130622 est = a la valeur du champs =093
la valeur 1999 est = a la valeur du champs =260
la valeur de eng est = a la valeur des 3 premieres lettres du du champs =041

S' il n'y a pas un des 3 champs on laisse la valeur du template

Pour faire ça j'ai recuperer ce scripts, il a marché une fois et la plus moyen de creer le =008
A la fin du post j'ai collé les 2 registre tel qu'ils devrait sortir apres execution du script

Je n'arrive pas a voir pourquoi, quelqu'un pourrait m'aiguiller?
D'avance merci

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import re
 
NOMBRE_FICHERO = "fichierSource.mrk"
 
f1 = open(NOMBRE_FICHERO, 'r')
f2 = open('salida.mrk', 'w')
 
template = r"=008  130622s1999\\\\xxx|||||\||||\00|\0\eng\d"
linea = f1.readline()
linea93 = ''
linea260 = ''
linea41 = ''
while linea != '':
 
        if '=093' in linea:
                m = re.search(r'\d\d/\d\d/\d{4}', linea)
                if m:
                        temp = m.group().split("/")
                        linea93 = temp[2][2:] + temp[1] + temp[0]
        if '=260' in linea:
                m = re.search(r'\d{4}$', linea)
                if m:
                        linea260 = m.group()
        if '=041' in linea:
                m = re.search(r'[a-zA-Z]{3}', linea)
                if m:
                        linea41 = m.group()
        if linea == "\n":
                t = template
                if linea93 != '':
                        t = t.replace(r'130622', linea93)
                if linea260 != '':
                        t = t.replace(r'1999', linea260)
                if linea41 != '':
                        t = t.replace(r'eng', linea41)
                f2.write(t + "\n")
                linea93 = ''
                linea260 = ''
                linea41 = ''
        f2.write(linea)
        linea = f1.readline()
 
f1.close()
f2.close()
Resultat:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
=LDR  00800ntm a2200229   4500
=001  199801568
=041  \\$aEspañol
=093  \\$a01/07/2013
=094  \\$aMASTER EXECUTIVE EN DIRECCION DE HOSPITALES Y EMPRESAS SANITARIAS
=096  \\$aRevisado
=100  10$aLópez Peña, Marta
=245  10$aDefinición de puestos de trabajo (funciones del personal no sanitario)
=260  \\$c1994
=337  \\$aDigital
=502  \\$bMaster en Dirección de Hospitales y Empresas Sanitarias$gGHE1
=590  \\$aDisponible sólo en formato digital
=650  \\$aGestión hospitalaria
=856  \\$uhttp://www.eada.net/servlets/obtenerFicheroBiblioteca?file=proyectos/199801568.pdf
=901  \\$aProyecto
=931  \\$aSÃ*
=942  \\$n0
=952  \\$w2013-07-29$p8$71$r2013-07-29$40$00$922112$bEADA$yPROJ$10$d2013-07-29$aEADA
=999  \\$c59605$d59605
=008  130701s1994\\\\xxx|||||\||||\00|\0\spa\d
 
=LDR  00796ntm a2200217   4500
=001  199801578
=094  \\$aMASTER EXECUTIVE EN DIRECCION DE HOSPITALES Y EMPRESAS SANITARIAS
=096  \\$aRevisado
=100  10$aBusturia, P. de
=245  10$aProceso de transformación del "Servicio de admisión" en un "Gabinete de gestión de pacientes"
=260  \\$c1994
=337  \\$aDigital
=502  \\$bMaster en Dirección de Hospitales y Empresas Sanitarias$gGHE1
=590  \\$aDisponible sólo en formato digital
=650  \\$aGestión hospitalaria
=856  \\$uhttp://www.eada.net/servlets/obtenerFicheroBiblioteca?file=proyectos/199801578.pdf
=901  \\$aProyecto
=931  \\$aSÃ*
=942  \\$n0
=952  \\$w2013-07-29$p9$71$r2013-07-29$40$00$922113$bEADA$yPROJ$10$d2013-07-29$aEADA
=999  \\$c59606$d59606
=008  130622s1994\\\\xxx|||||\||||\00|\0\eng\d