Aller au contenu

Extraction du texte brut d'un document HTML

Exercice

On dispose d'une chaine de caractères représentant une portion de code HTML et on souhaite écrire une fonction texte_brut qui supprime toutes les balises HTML de cette chaine et renvoie le texte brut qu'il contient.

On rappelle qu'une balise HTML s'écrit sous la forme <nom_balise> ou </nom_balise>.

Si l'on considère par exemple le code html = "<p>un <strong>exemple</strong> de chaine</p>" alors l'appel texte_brut(html) renverra 'un exemple de chaine'.

On admet :

  • qu'un caractère < déclarant une ouverture de balise est toujours suivi plus loin dans la chaine d'un caractère > ;
  • qu'il n'y a jamais de balises imbriquées.
Exemples
>>> html = "<p>un <strong>exemple</strong> de chaine</p>"
>>> texte_brut(html)
'un exemple de chaine'
>>> html = "<h1>un grand titre en <span style='color: red'>rouge</strong> !</h1>"
>>> texte_brut(html)
'un grand titre en rouge !'
###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : /
.128013x/.Tr;nbOylaeu)d63m(P+02-],59fq7B}8 _o={pcwgv4F1kRéhtsSà[i:E050q0n0#0m0*0l0$0K0Q0l0m0$0$0N010#0*0P010406050$0o0t0t0m0f0k040%0M0l0o100M0h0K020m0t0P0g0K0Y0n1a0f0F0o0n0$050c17191b1d150P04051I1B1L0c1I150q0*0T0^0`0|0~0!0*0S0!0l1Z0!0#13050:0i0l0n1U0{0}011Y1!1$1!0#1,1.1*0#0f1J0#0!1:1W010E0=0n0h1o0n010^1g0$0P0m0h0~0y1*2g2i241=271.2a0t2c040a0K0v0f0M0P0M0$0*1j1l0.2e0f0f0n0Q2G1B2n0h1J0c222S1 21201+0q2p0~1$0h292D1*1R1T0_1;2$0*2(0h0M2,1*0P2L1J2Q2S2}162h1l2.252?0f1a0l130K0W2P3114302o331=3537390y3c2i3e2Q2#013j0m38040K0s3n2R153q3h0~3t3v0K0U3z3p313r3F390C3J3B3L3D3s0M363u390r3Q3f321V3i3V3k3w0G3!3C3%3E3)3X3w0J3-3S3/3U3W3G0D3^3g3`3N040W0x3 3$2/3{3*0W3b1C3d1M2{1B2,2V0q212!3T0Q2@2v0-1S1J2`0n2|4e4d3o054o0.4w40480X130.0E3J3#3r0R394K3.480h0E130#0n0b4V0L0i0f1i4P3_4812040u4%4E34131(0t0l4-47254*0p0+3Q0K4~0K4L3T0h130f0Z170l0:0#3J504Q250M130N5b513`0$2l0401014}4 5j4R130i3u0*0$0n5i5d1=5f045h4y2R5c4(250X0Q130V3u5y5q4~5s5K130E3V5A5J3i130Q5Y4.5C4N042;5%4^5!044;4?5G4D5.0~4*4|5?064 5~5I5(0~4G5+4J5?605^3s5#5-3r5D0N5F2}673r5l130102580g5p5?5T1=5`5R5 5~6r3E5u5w5Q666x016d6b3T5L130e4#5z5|6v5S5B62130n1$656g6D53045$6C6Q6E5g6f3d6h3T6j5n020S0#6o4@3r6t6N6O6w6$6Y5v1$6B6W6$6F6#5Z625M045O0?6M2}5}6O6D636T0*6V6*6D0M5*2?5a746169046~5x7b4e6$6^7c6`6{757s5557596G3`5D0w6)3o6+416a6_6P7D632L0#0o0f0h7I5t047F0o580m7p7c1B4B4v4f7/0c4i1B0#4k7@2Y2T0m1-7;4i1H5@3r2L0t0L0E0m0X0n0L0!0s131t1v1x1z0K5{2 1O3e1I0j1l0m0P4u0h0q0f0m0K0P1h0@0:0f2!0(0K0T0Z0f7i0*0n0f0K2E0K0o2(0K4W4u0|0*1k8T0$0#2J2L2N1u298#2h2L0h22560Z0n0d1M8n040v1b8T0b1u8z0n0B8@157(3e1$1J7.4+0)0A0p0O0I7-4p3w1z8#4o2K2M4V2u8.8y1b8*0!8:6M9615964A9g0u0)0p0A9d9f4C5c1 1k0S040h009i9q1A1C9J0h9L8$9m8)9p8,9s9u1B9w059y989B9E9e0c989I2A9U9M9O8!9Q2P9T9V9k8%9n8*9q8-8/0$8;9%0*3e0c94157=0/0;0?3e2,3r0m0q0t1k2F8X1l0i1k0o0$131Hajalan2G0z100#1}040Has9R1P1K040,0b8z0*8h8N0Q1/1x0*8y0n1i8O1/2`2@0o0*2L8O000=0K0k0K8x8R1/7u5y0K3V0P0!7h2(0B2e191/9z4C6m6;0c4!6/6;9G4v8?8mac4i.