Compiler deux fichiers ensembles et remplacement de caracteres

Fermé
Champi_Pilz Messages postés 2 Date d'inscription mardi 10 mars 2015 Statut Membre Dernière intervention 11 mars 2015 - 10 mars 2015 à 14:53
Champi_Pilz Messages postés 2 Date d'inscription mardi 10 mars 2015 Statut Membre Dernière intervention 11 mars 2015 - 11 mars 2015 à 15:49
Bonjour, je débute sur python pour un travail mais je dois donner des resultats tres vite. j'ai 2 "questions"
la première est la suivante:
j'ai 2fichiers séparés un qui est un ensemble de sequences ayant comme titre juste un chiffre et le second est composé d'une liste de chiffres aux quels est associé un noms et je voudrais faire sous python un script qui recherche dans le premier fichier le numero présent dans le second et remplacer ce numéro par le nom correspondant dans le second. petit exemple:
le 1er fichier appelé DNA.txt se présente sous la forme suivante:
>0
XXXXXXXXXXXXXXXXXXXXXXXX
>1
XXXXXXXXXXXXXXXXXXXXXXXX
>2
XXXXXXXXXXXXXXXXXXXXXXXX
...
le 2eme fichier appelé names.txt :
>0 name1
>2 name2
...
(bien entendu dans le fichier names toutes les sequences ne sont pas presentes)

et je voudrais avoir a la fin un ficher qui serait du style:
>0 name1
XXXXXXXXXXXXXXXXXXXXXXXX
>1
XXXXXXXXXXXXXXXXXXXXXXXX
>2 name2
XXXXXXXXXXXXXXXXXXXXXXXX
...



la seconde question est la suivante:
j'ai un autre fichier de sequences que je vais nomer DNA_genes1.txt se presentant sous la forme suivante:

>gi|0123| name like, cds
XXXXX
YYYYY
ZZZZZ
>gi|456| name2 like, mRNA
YYYYY
XXXXX
ZZZZZ

et via un script sous python je voudrais automatiser certaines actions comme supprimer tous les retours á la ligne dans les sequences et toutes les virgules dans les noms ainsi que remplacer tous les espaces et les "|" par des "_" pour finir sur un fichier ressemblant á:
>gi_0123_name_like_cds
XXXXXYYYYYZZZZZ
>gi_456_name2_like_mRNA
YYYYYXXXXXZZZZZ


je vous remercie d'avance pour vos conseils, aides, suggestions et scripts. je debute vraiment avec python sans aucuns cours juste en faisant des recherches sur le net vite fait mais je n'est maleuresement pas le temps de lire des tutorials complets expliquant tout de a á z.

et en gros pour exagerer pour le moment je n'ai que les premieres permettant d'appeler mes fichiers:

>>>import os
>>>os.chdir("chemin d'acces á mon repertoire de travail")
>>>with open("DNA.txt","r") as DNA :
with open("names.txt","r") as names :


et je ne suis meme pas sur que je peux appeller mes deux fichiers de la sorte ou suis je obligé des les appeler chacuns et a la fin de les refermer avec DNA.close() et names.close()
A voir également:

1 réponse

Champi_Pilz Messages postés 2 Date d'inscription mardi 10 mars 2015 Statut Membre Dernière intervention 11 mars 2015
11 mars 2015 à 15:49
pour la deuxieme partie qui consiste a modifier des caracteres dans un fichier j'ai réussi a faire ceci:

>>> import os
>>> os.chdir("/Users/xxx/pythontest") #changer de repertoire courrant
>>> data = open("DNA_genes1.txt","r") #ouvrir le fichier source
>>> contenu = data.read() #lire l ensemble du fichier source
>>> dic={"|":"_"," ":"_",",":""} #creer le dictionnaire des caracteres a changer avec les carateres de remplacement
>>> outfile = open("outfile.txt","w") #creer le fichier de destination
>>> for cle in dic:
... contenu = contenu.replace(cle,dic[cle]) #remplace les caracteres en fonction du dictionnaire cree
... outfile.write(contenu) #ecrit dans le fichier de destination le nouveau contenu apres les remplacements
>>>
>>> data.close() #fermer le fichier source
>>> outfile.close() #fermer le fichier de destination


alors quend j'ouvre mon fichier de destination j'ai bien remplacé tous les epaces par _ mais les virgules et les | sont toujours presents. on m'a conseillé de mettre des antislash devant | et , mais je suis sur MAC avec un clavier MAC allemand, dans un editeur de text je connais le racourcis pour faire le \ (alt + shift + 7) mais dans IDLE cela ne fonctionne pas et quand je fais un copié collé de \ d'un editeur de text dans l'IDLE de python l'antislash s'affiche mais cela ne change rien dans mon resultat.

en suite pour ce fichier il me restera (outre ce probleme de non reconnaissance de , et de |) a trouver comment dire de suprimer les retours a la ligne dans les sequences et pas celui a la fin des sequences ni a la fin des noms des sequences.

J'espere que quelqu'un m'aidera et en le ou les remerciant d'avance. je debute avec python et comme vous venez de le voir je tente de trouver par moi meme mais ca me prend beaucoup de temps.
0