Extraction texte sur plusieurs lignes en Perl
Résolu
gingerbrice
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
-
Mortagus Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
Mortagus Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Extraction texte sur plusieurs lignes en Perl
- Transcription audio en texte word gratuit - Guide
- Partager photos en ligne - Guide
- Excel cellule couleur si condition texte - Guide
- Texte cellule excel sur plusieurs lignes - Guide
- Mettre un texte en majuscule - Guide
5 réponses
Salut,
Je n'ai pas le temps d'entrer dans les détails, je suis au boulot ;-)
#!/usr/bin/perl use strict;use warnings; while(<DATA>){print if /Extracellular/ ... /<\/tt/} __END__ <td valign=top><b>TOPO_DOM</b></td> <td valign=top nowrap><b><a href="/cgi-bin/sprot-ft-details.pl?Q14332@TOPO_DOM@24@247">24-247</a></b></td> <td valign=top><b>224</b></td> <td ><b>Extracellular (Potential)</b><br><tt>QFHGEKGISI PDHGFCQPIS IPLCTDIAYN QTIMPNLLGH TNQEDAGLEV HQFYPLVKVQ CSPELRFFLC SMYAPVCTVL EQAIPPCRSI CERARQGCEA LMNKFGFQWP ERLRCEHFPR HGAEQICVGQ NHSEDGAPAL LTTAPPPGLQ PGAGGTPGGP GGGGAPPRYA TLEHPFHCPR VLKVPSYLSY KFLGERDCAA PCEPARPDGS MFFSQEETRF ARLW </tt></td> </tr> <tr bgcolor="#FFFFCC"> <td valign=top><input type=checkbox name=seq value=">Q14332|TRANSMEM_248-268 1 (Potential) ILTWSVLCCASTFFTVTTYLV"></td> <td valign=top><b>TRANSMEM</b></td> <td valign=top nowrap><b><a href="/cgi-bin/sprot-ft-details.pl?Q14332@TRANSMEM@248@268">248-268</a></b></td> <td valign=top><b>21</b></td> <td ><b>1 (Potential)</b><br><tt>ILTWSVLCCA STFFTVTTYL V </tt></td> </tr> <tr bgcolor="#FFFFCC"> <td valign=top><input type=checkbox name=seq value=">Q14332|TOPO_DOM_269-279 Cytoplasmic (Potential) DMQRFRYPERP"></td> <td valign=top><b>TOPO_DOM</b></td>On obtiens
root@debian:~# perl ccm.pl <td ><b>Extracellular (Potential)</b><br><tt>QFHGEKGISI PDHGFCQPIS IPLCTDIAYN QTIMPNLLGH TNQEDAGLEV HQFYPLVKVQ CSPELRFFLC SMYAPVCTVL EQAIPPCRSI CERARQGCEA LMNKFGFQWP ERLRCEHFPR HGAEQICVGQ NHSEDGAPAL LTTAPPPGLQ PGAGGTPGGP GGGGAPPRYA TLEHPFHCPR VLKVPSYLSY KFLGERDCAA PCEPARPDGS MFFSQEETRF ARLW </tt></td>Il te reste à supprimer les balises de début est fin.
Je n'ai pas le temps d'entrer dans les détails, je suis au boulot ;-)
Tiens une autre version
#!/usr/bin/perl use strict;use warnings; my @tab; while(<DATA>){push @tab,$_ if /Extracellular/ ... /<\/tt/} grep { s/<.*?\/?>//g } @tab; print "@tab\n"; __END__ <td valign=top><b>TOPO_DOM</b></td> <td valign=top nowrap><b><a href="/cgi-bin/sprot-ft-details.pl?Q14332@TOPO_DOM@24@247">24-247</a></b></td> <td valign=top><b>224</b></td> <td ><b>Extracellular (Potential)</b><br><tt>QFHGEKGISI PDHGFCQPIS IPLCTDIAYN QTIMPNLLGH TNQEDAGLEV HQFYPLVKVQ CSPELRFFLC SMYAPVCTVL EQAIPPCRSI CERARQGCEA LMNKFGFQWP ERLRCEHFPR HGAEQICVGQ NHSEDGAPAL LTTAPPPGLQ PGAGGTPGGP GGGGAPPRYA TLEHPFHCPR VLKVPSYLSY KFLGERDCAA PCEPARPDGS MFFSQEETRF ARLW </tt></td> </tr> <tr bgcolor="#FFFFCC"> <td valign=top><input type=checkbox name=seq value=">Q14332|TRANSMEM_248-268 1 (Potential) ILTWSVLCCASTFFTVTTYLV"></td> <td valign=top><b>TRANSMEM</b></td> <td valign=top nowrap><b><a href="/cgi-bin/sprot-ft-details.pl?Q14332@TRANSMEM@248@268">248-268</a></b></td> <td valign=top><b>21</b></td> <td ><b>1 (Potential)</b><br><tt>ILTWSVLCCA STFFTVTTYL V </tt></td> </tr> <tr bgcolor="#FFFFCC"> <td valign=top><input type=checkbox name=seq value=">Q14332|TOPO_DOM_269-279 Cytoplasmic (Potential) DMQRFRYPERP"></td> <td valign=top><b>TOPO_DOM</b></td>Le résultat
root@debian:~# perl ccm.pl Extracellular (Potential)QFHGEKGISI PDHGFCQPIS IPLCTDIAYN QTIMPNLLGH TNQEDAGLEV HQFYPLVKVQ CSPELRFFLC SMYAPVCTVL EQAIPPCRSI CERARQGCEA LMNKFGFQWP ERLRCEHFPR HGAEQICVGQ NHSEDGAPAL LTTAPPPGLQ PGAGGTPGGP GGGGAPPRYA TLEHPFHCPR VLKVPSYLSY KFLGERDCAA PCEPARPDGS MFFSQEETRF ARLW
Super je devrai arriver à me debrouiller avec ça.
Merci bcp lami20j !
je mettrai le sujet en résolu quand j'aurai fini de traiter mes fichiers.
Merci bcp lami20j !
je mettrai le sujet en résolu quand j'aurai fini de traiter mes fichiers.
Donc le code qui ma permis de resoudre mon probleme est
my @tab;
while(<DATA>){push @tab,$_ if /Extracellular/ ... /<\/tt/}
grep { s/<.*?\/?>//g } @tab;
print "@tab\n";
Encore merci lami20j
my @tab;
while(<DATA>){push @tab,$_ if /Extracellular/ ... /<\/tt/}
grep { s/<.*?\/?>//g } @tab;
print "@tab\n";
Encore merci lami20j
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
bonjour a tous,
j'ai un problème similaire a notre ami gingerbrice:
voici mon texte :
ID Q8VLP7_STRAG Unreviewed; 544 AA.
AC Q8VLP7;
DT 01-MAR-2002, integrated into UniProtKB/TrEMBL.
DT 01-MAR-2002, sequence version 1.
DT 09-FEB-2010, entry version 23.
DE SubName: Full=Group B streptococcus secreted protein;
DE Flags: Precursor;
GN Name=bsp;
OS Streptococcus agalactiae sophisticae ultrae compilatum (message entre
OS parentheses).
OC Bacteria; Firmicutes; Lactobacillales; Streptococcaceae;
OC Streptococcus.
OX NCBI_TaxID=1311;
la partie en gras est le texte qui m'interresse. J'aimerais bien utiliser uniquement les regex afin de pouvoir extraire cette partie de texte. Tout en sachant qu'il me faut que les informations des lignes commençant par le même "identifiant".
J'ai pondu ceci : (.?OS (.*)\n?)+\.
mais ça ne me permet pas d'avoir que le texte sans les à coté.
Pouvez-vous m'aider ?
j'ai un problème similaire a notre ami gingerbrice:
voici mon texte :
ID Q8VLP7_STRAG Unreviewed; 544 AA.
AC Q8VLP7;
DT 01-MAR-2002, integrated into UniProtKB/TrEMBL.
DT 01-MAR-2002, sequence version 1.
DT 09-FEB-2010, entry version 23.
DE SubName: Full=Group B streptococcus secreted protein;
DE Flags: Precursor;
GN Name=bsp;
OS Streptococcus agalactiae sophisticae ultrae compilatum (message entre
OS parentheses).
OC Bacteria; Firmicutes; Lactobacillales; Streptococcaceae;
OC Streptococcus.
OX NCBI_TaxID=1311;
la partie en gras est le texte qui m'interresse. J'aimerais bien utiliser uniquement les regex afin de pouvoir extraire cette partie de texte. Tout en sachant qu'il me faut que les informations des lignes commençant par le même "identifiant".
J'ai pondu ceci : (.?OS (.*)\n?)+\.
mais ça ne me permet pas d'avoir que le texte sans les à coté.
Pouvez-vous m'aider ?