Python split () sans supprimer le délimiteur [dupliquer]

cette question a déjà une réponse ici:

  • en Python, comment je divise une corde et garde les séparateurs? 9 réponses

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'>'.

,

<html><head>

se transforme en

['<html','<head']

y a-t-il un moyen d'utiliser la méthode split() mais garder le délimiteur, au lieu de l'enlever?

avec ces résultats..

['<html>','<head>']
61
demandé sur some1 2011-10-23 16:28:51

4 réponses

d = ">"
for line in all_lines:
    s =  [e+d for e in line.split(d) if e]
33
répondu P.Melch 2017-02-15 04:02:24

si vous analysez HTML avec splits, vous le faites très probablement mal, sauf si vous écrivez un script d'un seul coup visant un fichier de contenu fixe et sécurisé. S'il est censé fonctionner sur une entrée HTML, comment allez-vous gérer quelque chose comme <a title='growth > 8%' href='#something'> ?

en tout cas, les travaux suivants pour moi:

>>> import re
>>> re.split('(<[^>]*>)', '<body><table><tr><td>')[1::2]
['<body>', '<table>', '<tr>', '<td>']
26
répondu gb. 2011-10-23 14:54:32

Que pensez-vous de ceci:

import re
s = '<html><head>'
re.findall('[^>]+>', s)
13
répondu Óscar López 2011-10-23 12:45:34

Juste split, puis pour chaque élément dans le tableau/liste (sauf la dernière) ajouter un point ">".

1
répondu orangething 2011-10-23 12:33:50