Ответ 1
d = ">"
for line in all_lines:
s = [e+d for e in line.split(d) if e]
Этот код почти делает то, что мне нужно...
for line in all_lines:
s = line.split('>')
Кроме того, удаляются все разделители ' > '.
Итак,
<html><head>
Входит в
['<html','<head']
Есть ли способ использовать метод split(), но сохраните разделитель вместо его удаления?
С этими результатами..
['<html>','<head>']
d = ">"
for line in all_lines:
s = [e+d for e in line.split(d) if e]
Если вы разбираете HTML с разбиением, вы, скорее всего, ошибаетесь, за исключением случаев, когда вы пишете одноразовый script, предназначенный для фиксированного и защищенного содержимого. Если он должен работать на любом вводе HTML, как вы будете обрабатывать что-то вроде <a title='growth > 8%' href='#something'>
?
В любом случае для меня работает следующее:
>>> import re
>>> re.split('(<[^>]*>)', '<body><table><tr><td>')[1::2]
['<body>', '<table>', '<tr>', '<td>']
Как насчет этого:
import re
s = '<html><head>'
re.findall('[^>]+>', s)
Просто разделите его, затем для каждого элемента массива/списка (кроме последнего) добавьте к нему конечный " > ".