Texte brut issu d'un document HTML

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 chaîne 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 chaîne 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 !'
Sur la présentation des tests

Afin d'éviter des problèmes d'affichage de la page, les balises ont été découpées dans le fichier Python.

Ainsi "<p>" devient "<"+"p"+">".

###(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 : 10/10
.128013s3o_8;bcdufvg/T0ly n7apSr1Fme(P2=4:+twki95hx)6050j0D0L0w0O0r0b0t0i0r0w0b0b0H010L0O0x010406050b0k0C0C0w0z0s040y0d0r0k0/0d0u050o0_0{0}0 0@0x04181f051i0o1i1k1f0@0j0O0m0%0)0+0-0R0O0n0R0r1y0R0L0=050Y0h0r0D1t0*0,011x1z1B1z0L1H1J1F0L0h0d0j0 1G0z1g0L0R0%120b0x0w0u0-0G011L1v010l0!0D0u0w0C0D1F1-1/1@1N1`1J1}1 0=0a0t0F0z0d0x0d0b0O150u0t0W1+0z0z0D0i2k18220u1g0o1)2x0L1%1$1(0j240-1B0u1|2h1F1q1s0(1M2H0O2J0u1Z1r1F0x2q1g2v2x2#0^1.2l2P1^2U0z0|0r0=0t0A2u2)0?2(232+1N2-2/2;0G2@1/2_2v2G012~0w2:040t0c322w0@352|0-383a0t0I3e342)363k2;0Q3o3g3q3i370d2.392;0U3v2`2*1u2}3A2 3b0v3F3h3I3j3K3C3b0f3O3x3Q3z3B3l0P3W2{3Y3s040A0q3%3H2Q3Z3L0A2?192^1h2Z182N2A0j2E360i1Z201g3}1j3{2%3^3305420W2!3X3:0N0=0W0l3o3G360M2;4m3P3:0u0l0=0L0D0S4x0e0h0z144r4g1^0;040E4F3(4t0=1D0C0r4L3/4H0=0T0J3v0t4Z0t4n3y0u0=2q0_0r0Y0L3o4#4s1^0d0=0H4/4$3Y0b1=0401014Y4!4`4N040h390O0b0D4_4;1N4?044^4a2w4:4G1N0N0i0=0B3959514Z531^4i040l3A5b5k3j0=0i5A4M4=4p042S5F4T2}4O0L4Q4S364I4X5h0?4!5X5j5G5l0=0O4l5V5Z5M5C045E5)5u5d4@5g2#5*364|0=01024,0g505V5:0-5T5s5Y5X62370=561B5r5/5c0-5e5?2^5^3y5m0=0p4D5a5V06665t6f015w0D1B5(5@684(5-5L366h6i336k4{4}5|0n0L5 5R3y646r6t5Y6C6a576d6B6v6h6F6l5n045p0#6q2#6s6t686x6z6(3Y0d5I2U4.6e5B69556Z6.3_6v6T6/6V676v6D4*0k4,0w6}6#6 5e0K6I5i6X6E6U526v5w2q0L0k0z176~5!5,7c7e7g2^0@0o4d0D2x2Y7I3|1r3~2A2C2y1Y1!2A0w1I7L0o3}7F0W0Y0!0b04.