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 :

Traitement de fichier texte de longueur fixe


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    formateur
    Inscrit en
    Juillet 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : formateur

    Informations forums :
    Inscription : Juillet 2017
    Messages : 7
    Par défaut Traitement de fichier texte de longueur fixe
    #Newbie
    Bonjour,
    Débutant sous Python, j'essaye de traiter un fichier TXT mais en longueur fixe sans délimiteur.
    Mon fichier source à la format :
    VB1 19:47 07:23 1 10:15 20:25 4 2 3 5 6 7
    Les champs ont une longueur fixe.

    Le but étant de faire une app permettant de transformer se fichier en longueur fixe, en fichier TXT avec séparateur ";" pour ensuite l'importer dans un logiciel de paie.
    Je trouve bien des solutions de traitement de fichier AVEC séparateur mais pas SANS.

    Merci de votre aide.

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 078
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> s = "VB1 19:47 07:23 1 10:15 20:25 4 2 3 5 6 7"
    >>> s_list = s.split()
    >>> s_list
    ['VB1', '19:47', '07:23', '1', '10:15', '20:25', '4', '2', '3', '5', '6', '7']
    >>> ';'.join(s_list)
    'VB1;19:47;07:23;1;10:15;20:25;4;2;3;5;6;7'
    C'est ce résultat que vous souhaitez ?

    EDIT: Effectivement comme le dit mon voisin du dessous, il y a replace, je ne l'utilise pratiquement jamais, j'ai zappé !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> s = "VB1 19:47 07:23 1 10:15 20:25 4 2 3 5 6 7"
    >>> s.replace(' ', ';')
    'VB1;19:47;07:23;1;10:15;20:25;4;2;3;5;6;7'

  3. #3
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    de là à faire directement un replace...

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 762
    Par défaut
    Salut,

    Citation Envoyé par BufferBob Voir le message
    de là à faire directement un replace...
    La différence entre un fichier à longueur fixe et un fichier ou le séparateur est l'espace est le nombre d'espaces qu'il y a entre les "champs".

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre à l'essai
    Homme Profil pro
    formateur
    Inscrit en
    Juillet 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : formateur

    Informations forums :
    Inscription : Juillet 2017
    Messages : 7
    Par défaut
    Re bonjour,
    Déjà merci de votre aide.
    Je me suis mal exprimé.
    Là, dans mon exemple les champs sont successifs mais il s'agit d'un export et ce serait trop simple de remplacer les espaces par ";"
    Mon fichier a plusieurs lignes, la taille des champs sont fixe et il n'y a pas de delimiteur. Ce qui fait que certe je vous ai donné le cas d'un seul enregistrement mais dans le cas de plusieurs sa ressemble plus à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    VB12       12:35   1:00        5      1     34:00    12             5
    VB06       11:00              10      9      3:14           7       8
    Et du coup je ne peux pas utiliser la fonction remplace.
    PS : Je ne comprend pas, en mode redaction l'affichage de mes 2 lignes sont OK j'ai bien un décalage que je n'ai pas une fois le message validé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    VB12       12:35    1:00        5      1     34:00    12             5
    VB06       11:00               10      9      3:14           7       8

  6. #6
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 078
    Par défaut
    Je ne vois pas où vous voulez en venir ? Désolé, ce n'est pas très explicite (je précise en ce qui me concerne).

    @wiztricks,

    C'est vrai, cependant, j'ai l'impression que c'est formaté automatiquement, et que le nombre d'espace semble fixe lui aussi...

  7. #7
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 762
    Par défaut
    Citation Envoyé par hbtvs Voir le message
    Mon fichier a plusieurs lignes, la taille des champs sont fixe et il n'y a pas de delimiteur.
    Il faut extraire chaque champ en fonction de sa colonne de début et de sa colonne de fin, puis nettoyer les espaces.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  8. #8
    Membre à l'essai
    Homme Profil pro
    formateur
    Inscrit en
    Juillet 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : formateur

    Informations forums :
    Inscription : Juillet 2017
    Messages : 7
    Par défaut
    pour le moment je passe par un import via access avec un masque d'import determiné. Champ1, Debut 1, longueur 4, Champ2, Debut 5, longueur.....
    J'ai donc le masque, il faudrait pouvoir le transposer pour l'import dans ce cas.

Discussions similaires

  1. Export fichier txt en longueur fixe
    Par manuaccess10 dans le forum VBA Access
    Réponses: 3
    Dernier message: 29/12/2009, 10h07
  2. Problème traitement de fichiers texte
    Par darkbol1982 dans le forum VBScript
    Réponses: 7
    Dernier message: 20/02/2009, 15h05
  3. Traitement de fichier texte (txt)
    Par abdestom dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 01/09/2008, 16h14
  4. Traitement des fichiers textes
    Par Julien Dufour dans le forum VBA Access
    Réponses: 3
    Dernier message: 15/08/2008, 15h50
  5. [VB.NET] - Traitement de fichier texte
    Par titoff60 dans le forum Windows Forms
    Réponses: 11
    Dernier message: 17/01/2007, 08h27

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