IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

creer un champ a la volée


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut creer un champ a la volée
    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

  2. #2
    Expert confirmé

    Avatar de deusyss
    Homme Profil pro
    Expert Python
    Inscrit en
    Mars 2010
    Messages
    1 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Expert Python
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 659
    Par défaut
    Bonjour ldiaz,

    Es-tu sous windows, Linux ou MAC? Cela peut éventuellement jouer sur le fichier. En effet, le caractère de fin de ligne n'est pas toujours le mem: <LF> ou <CR><LF>.

    Ne serait-ce pas cela qui pose probleme? une incomtabilité de format Unix/windows

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut
    merci de ta reponse !!!

    ha tu crois?

    et bien le fichier .py a ete crée sous linux et le fichier source j'ai bien peur que sous windows. Je fais un dos2unix du fichier source?

    Merci

  4. #4
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut
    T'as mis dans le MIL
    j'ai fait dos2unix et voila ça marche...
    merci pour ton aide !

    Bonne journée

  5. #5
    Expert confirmé

    Avatar de deusyss
    Homme Profil pro
    Expert Python
    Inscrit en
    Mars 2010
    Messages
    1 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Expert Python
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 659
    Par défaut
    Cela pourrait peut etre suffire oui. La première chose à faire est identifier le format et à l'adapter selon l'OS que tu utilises.

    Tu peut utiliser un logiciel type notepad ++ (windows) ou geany (Linux, menu document/definir fin de ligne) pour connaitre le format de chaque fichier.

    Le CRLF correspond à \r\n et le LF à \n. Le script serait ptet donc à modifier.

    En fait pour moi, au debut, ton fichier était dans le bon format. Tu as lancé le script et les fin de ligne ont été changé. Du coup, le script ne fonctionne plus depuis. Cela serait cohérent avec ce que tu décrit. De plus j'ai déjà été confronté à ce type d'anomalie.

  6. #6
    Expert confirmé

    Avatar de deusyss
    Homme Profil pro
    Expert Python
    Inscrit en
    Mars 2010
    Messages
    1 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Expert Python
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 659
    Par défaut
    Aucun soucis. On est là pour s'entraider

  7. #7
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut
    Oui c'est super
    si t'as des questions sur base de données Oracle, n'hesite pas.
    Ciao

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. peut-on creer 2 champs de type timeStamp?
    Par kifouillou dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 26/02/2007, 17h01
  2. Creer un champs texte avec son blobspace!
    Par nic413 dans le forum Informix
    Réponses: 1
    Dernier message: 27/12/2006, 12h25
  3. [MySQL] Est-ce possible de creer des champs en temps réel lors d'une requête SQL ?
    Par kaptnkill dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 29/09/2006, 19h18
  4. Réponses: 1
    Dernier message: 08/09/2006, 13h26
  5. Creer un tar à la volée
    Par Krispy dans le forum Applications et environnements graphiques
    Réponses: 4
    Dernier message: 06/04/2006, 17h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo