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>']
4 réponses
d = ">"
for line in all_lines:
s = [e+d for e in line.split(d) if e]
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>']
Que pensez-vous de ceci:
import re
s = '<html><head>'
re.findall('[^>]+>', s)
Juste split, puis pour chaque élément dans le tableau/liste (sauf la dernière) ajouter un point ">".