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 :

Remplacer caractère dans fichier


Sujet :

Python

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 237
    Points : 99
    Points
    99
    Par défaut Remplacer caractère dans fichier
    Bonjour à tous,

    J'ai un fichier de données séparées par des ";".

    Pour chaque ligne je souhaite remplacer le 117ème caractère par un autre.

    Je n'arrive pas à choisir l'emplacement souhaité, j'arrive à remplacer en masse par exemple un caractère par un autre mais je reste bloqué sur le caractère exacte à remplacer.

    Merci de me donner quelques pistes pour démarrer.

  2. #2
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 237
    Points : 99
    Points
    99
    Par défaut
    en fait mon problème c'est que l'écriture fonctionne pas. Dans l'exemple ci-joint je souhaite changer le 66ème caractère. "-" par ";"

    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    fs = open('43-43-14p52N1-17-08p22W_INV_1_1_110204_150218_BDD.csv','r')
    fd = open ('43-43-14p52N1-17-08p22W_INV_1_1_110204_150218_BDD1.csv','w')
    line = fs.readline()
    car = 0
    while car < len (line):
        if car == 66 :
            print line [car]
            print line[car].replace('-',';')
        car = car + 1
    fd.write(line)      
    fs.close()
    fd.close()
    je n'écris qu'une ligne et en plus "-" n'est pas remplacé par ";"
    Fichiers attachés Fichiers attachés

  3. #3
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonjour,

    Avec for ln in fs.readlines() cela devrais aller mieux.
    Il ne reste plus qu'a compter les caractères (for car in ln) et changer le 116ème.

    Bon code

    Edit:
    Si tu ne souhaite pas lire les caractères de ln il est possible d'utiliser l'index.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> ln = 'ABCDE'
    >>> newln = ln[:2] + ';' + ln[3:]
    >>> print (newln)
    AB;DE
    @+

  4. #4
    Membre expérimenté Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Points : 1 481
    Points
    1 481
    Par défaut
    Pour compléter la réponse de PauseKawa, il faut bien comprendre que la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        ...
        print line[66].replace('-',';')
        ...
    - ne fait qu'afficher une chaine d'1 caractère, initialisée avec le 66+1ième caractère de line (ici, un tiret) immédiatement changé en point-virgule (replace)
    - que cette chaine a une durée de vie éphémère (le temps d'un print, après c'est l'affaire du ramasse-miettes)
    - que line ne bouge pas d'un iota

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 237
    Points : 99
    Points
    99
    Par défaut
    SUPER ça marche tip top

    Merci de ton aide

    Voici le code final :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #!/usr/bin/env python
    # -*- coding: iso-8859-1 -*-
     
     
    fs = open('43-43-14p52N1-17-08p22W_INV_1_1_110204_150218_BDD.csv','r')
    fd = open ('43-43-14p52N1-17-08p22W_INV_1_1_110204_150218_BDD1.csv','w')
     
    for ln in fs.readlines():
        newln = ln[:66]+";"+ln[67:]
        print newln
        fd.write(newln)      
    fs.close()
    fd.close()
    Bonne journée

  6. #6
    Membre confirmé
    Avatar de Captain'Flam
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2011
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 273
    Points : 455
    Points
    455
    Billets dans le blog
    1
    Par défaut
    pensez à la balise

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

Discussions similaires

  1. [Batch] Remplacer caractère dans nom fichiers
    Par LuffyyffuL dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 04/01/2013, 18h50
  2. [PowerShell] Remplacer caractère dans fichier texte
    Par jck2003 dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 23/03/2012, 06h27
  3. Remplacer caractère dans un fichier
    Par Spatule dans le forum VBScript
    Réponses: 2
    Dernier message: 14/10/2011, 16h39
  4. [Batch] Remplacer chaine de caractère dans fichier xml
    Par meumeu73.1 dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 27/09/2011, 08h36
  5. Remplacer chaine de caractère dans fichier .txt
    Par lepiaf69 dans le forum VB.NET
    Réponses: 6
    Dernier message: 07/09/2010, 15h57

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