不删除分隔符的 Python split()

这个代码几乎可以完成我需要它做的事情。

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

除了它删除所有的’>’分隔符。

那么,

<html><head>

变成了

['<html','<head']

有没有一种方法可以使用 split ()方法,但是使用 留着分隔符,而不是删除它?

With these results..

['<html>','<head>']
148021 次浏览

只需将其分割,然后为数组/列表中的每个元素(除了最后一个)添加一个尾随的“ >”。

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

这样吧:

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

如果您使用拆分来解析 HTML,那么很可能会出错,除非您正在编写针对固定且安全的内容文件的一次性脚本。如果它应该在任何 HTML 输入上工作,那么您将如何处理类似 <a title='growth > 8%' href='#something'>的输入?

不管怎样,下面这些对我很有用:

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