Bonjour a tous
j'ai un fichier rempli de ce type de registres, chaque registre commence par =LDR:
Je souhaite ajouter un champ =008 a partir de ce template
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
Le but est de recuperer des valeurs de certains champs dans le registre et de les coller dans le =008
Code : Sélectionner tout - Visualiser dans une fenêtre à part template = r"=008 130622s1999\\\\xxx|||||\||||\00|\0\eng\d"
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
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
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()
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
Partager