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 un caractere dans de nbx fichiers


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 12
    Par défaut Remplacer un caractere dans de nbx fichiers
    Bonjour a toutes et tous,
    Je cherche a remplacer dans de tres nombreux fichiers toutes les lettres "X" par un autre caractere (ou un "-")... Ce ne devrais pas etre tres complique.
    Tous les fichiers ont ce format d'intitule:
    "blablabla-GAG-AA.fasta" ou bien "blablabla-RT-AA.fasta"

    Leur contenu est de ce type:
    >aaaaaaa_BP_10-27-2010
    STKWRKLVDFRELNKRTQDFWEVQLGIPHPAGXKKXKSVTVLDVGDAYFSVPLDEDFRKY
    TAFTIPSTNNETPGIRYQYNVLPQGWKGSPAIFQCSMXKILEPFRKQNPDIVIYQYMDDL
    YVGSDLEIEQHRXK
    >aaaaaaa_BP_11-02-2010
    STKWRKLVDFRELNKRTQDFWEVQLGIPHPAGLKKXKSVTVLDVGDAYFSVPLDEDFRKY
    TAFTIPSTNNETPGIRYQYNVLPQGWKGSPAIFQCSMXKILEPFRKQNPDI
    >bbbbbbb_BP_11-02-2010
    STKWRKLVDFRELNKRTQDFWEVQLGIPHPAGLKKXKSVTVLDVGDAYFSVPLDEDFRKY
    TAFTIPSTNNETPGIRYQYNVLPQGWKGSPAIFQCSMTKILEPFRKQNPDI
    Je suppose que ce n'est pas d'une grande complexite mais je debute (ca doit se voir...)

    Par avance merci!!!

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    les strings ont une méthode replace(old, new[, numb]).

    Comme les strings sont immutables, tu dois en construire une nouvelle.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    s = 'STKWRKLVDFRELNKXTQDFWEVQLGIPHPAGXKKXKSVTVLDVGDXYFSVPLDEDFRKY'
    s = s.replace('X', '_')
    >>> 'STKWRKLVDFRELNK_TQDFWEVQLGIPHPAG_KK_KSVTVLDVGD_YFSVPLDEDFRKY'
     
    s = 'STKWRKLVDFRELNKXTQDFWEVQLGIPHPAGXKKXKSVTVLDVGDXYFSVPLDEDFRKY'
    s = s.replace('X', '_', 1)
    >>> 'STKWRKLVDFRELNK_TQDFWEVQLGIPHPAGXKKXKSVTVLDVGDXYFSVPLDEDFRKY'

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 12
    Par défaut
    Merci pour votre reponse et votre reactivite.
    Est-il possible d'avoir un script permettant d'executer automatiquement cette commande "replace" dans de multiples fichiers (nommés comme decrits ci-dessus) ranges dans un meme folder?
    Merci

  4. #4
    Membre chevronné
    Inscrit en
    Juillet 2012
    Messages
    231
    Détails du profil
    Informations forums :
    Inscription : Juillet 2012
    Messages : 231
    Par défaut
    Salut,

    Bon, je vois que tu bosses sur du FASTA donc je suppose que tu veux faire ta substitution de caractères uniquement dans les séquences (ne pas modifier les ID des séquences).
    Dans ce cas, il faudra en tenir compte lors de la lecture de ton fichier. Le plus simple serait de passer par BioPython (très utile si tu dois faire de la bioinfo avec Python, mais tu connais sûrement déjà), sinon tu te fais un code pour lire correctement un fichier FASTA (ce n’est pas non plus très compliqué, ça se fait bien en une vingtaine de lignes)
    Après, une fois que tu peux lire correctement tes fichiers FASTA et extraire les séquences sous forme de chaîne de caractère, il te suffit d’utiliser la méthode replace (comme te l’a indiqué VinsS).

    Pour appliquer un traitement sur un groupe de fichier dans un répertoire, tu peux utiliser la fonction glob pour récupérer la liste des fichiers qui t’intéresse.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $ ls
    blablabla-GAG-AA.fasta  blablabla-RT-AA.fasta
    $ bpython 
    >>> from glob import glob
    >>> for fasta in glob('*.fasta'):
    ...     print(fasta)
    ... 
    blablabla-GAG-AA.fasta
    blablabla-RT-AA.fasta
    >>>

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 12
    Par défaut
    Merci encore. Petit a petit, ca commence a prendre sens...meme si je realise que j'ai encore bcp de chemin a faire.
    Je vais essayer de me debrouiller a partir de ces precieux conseils. C'est deja un bon point de depart.

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 839
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par AntoineUCSD Voir le message
    Merci pour votre reponse et votre reactivite.
    Est-il possible d'avoir un script permettant d'executer automatiquement cette commande "replace" dans de multiples fichiers (nommés comme decrits ci-dessus) ranges dans un meme folder?
    Merci
    Bonjour
    Traiter n fichiers revient à traiter n fois un fichier. Ecris donc une fonction permettant de faire ce remplacement dans un fichier quelconque (nom du fichier passé en paramètre) puis appelle cette fonction pour tous les fichiers de ton folder

    Par exemple un truc comme ceci
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    import os
    def replace(fic):
       ...
       ... tout le travail ...
       ...
    # replace()
     
    # Et ensuite le traitement de chaque fichier du folder
    for f in os.listdir("folder"):
        replace("folder/%s" % f)
     
    # Ou alors traiter le folder en utilisant la méthode de grim7reaper
    C'est ça la "modularité"...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 12
    Par défaut
    Merci a toutes et tous pour votre aide.
    Je progresse pas a pas.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/02/2007, 22h48
  2. Remplacement de caracteres dans une ligne
    Par tibyann dans le forum Linux
    Réponses: 10
    Dernier message: 14/02/2006, 12h12
  3. Remplacer 1 caractère dans 1 variable en KornShell
    Par chickenhuchette dans le forum Linux
    Réponses: 5
    Dernier message: 31/12/2005, 11h24
  4. Réponses: 17
    Dernier message: 12/04/2005, 15h28
  5. remplacer un caractere dans un fichier
    Par ickis dans le forum C
    Réponses: 11
    Dernier message: 13/10/2003, 09h29

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