web-dev-qa-db-fra.com

Python split () sans supprimer le délimiteur

Ce code fait presque ce dont j'ai besoin pour ..

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

Sauf que cela supprime tous les délimiteurs '>'.

Alors,

<html><head>

Se transforme en

['<html','<head']

Est-il possible d’utiliser la méthode split () mais garder le délimiteur, au lieu de le supprimer?

Avec ces résultats ..

['<html>','<head>']
76
some1
d = ">"
for line in all_lines:
    s =  [e+d for e in line.split(d) if e]
41
P.Melch

Si vous analysez du code HTML avec des scissions, vous vous trompez probablement, sauf si vous écrivez un script ponctuel visant un fichier de contenu fixe et sécurisé. Si cela est supposé fonctionner avec une entrée HTML, comment allez-vous gérer 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>']
31
gb.

Que dis-tu de ça:

import re
s = '<html><head>'
re.findall('[^>]+>', s)
16
Óscar López

Il suffit de le scinder, puis d’ajouter un ">" final pour chaque élément du tableau/de la liste (à l’exception du dernier).

0
orangething