103 votes

Python split() sans supprimer le délimiteur

Ce code fait presque ce dont j'ai besoin.

 for line in all_lines:
    s = line.split('>')

Sauf qu'il supprime tous les délimiteurs '>'.

Donc,

 <html><head>

Se transforme en

 ['<html','<head']

Existe-t-il un moyen d'utiliser la méthode split() tout en conservant le délimiteur au lieu de le supprimer ?

Avec ces résultats..

 ['<html>','<head>']

60voto

P.Melch Points 3278
d = ">"
for line in all_lines:
    s =  [e+d for e in line.split(d) if e]

36voto

gb. Points 246

Si vous analysez du HTML avec des fractionnements, vous vous trompez probablement, sauf si vous écrivez un script one-shot destiné à un fichier de contenu fixe et sécurisé. S'il est censé fonctionner sur n'importe quelle entrée HTML, comment gérerez-vous quelque chose comme <a title='growth > 8%' href='#something'> ?

Quoi qu'il en soit, ce qui suit fonctionne pour moi:

 >>> import re
>>> re.split('(<[^>]*>)', '<body><table><tr><td>')[1::2]
['<body>', '<table>', '<tr>', '<td>']

20voto

Óscar López Points 97105

Que dis-tu de ça:

 import re
s = '<html><head>'
re.findall('[^>]+>', s)

0voto

dajfarrell Points 531

Il suffit de le diviser, puis pour chaque élément du tableau/de la liste (à part le dernier) d'y ajouter un ">" de fin.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X