Python split() 不去掉分隔符

132 投票
4 回答
180325 浏览
提问于 2025-04-17 04:51

这段代码差不多能满足我的需求……

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

但是它把所有的'>'分隔符都去掉了。

所以,

<html><head>

变成了

['<html','<head']

有没有办法使用split()方法,但能保留分隔符,而不是把它去掉呢?

这样得到的结果……

['<html>','<head>']

4 个回答

23

这样怎么样:

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

如果你在用分割的方法解析HTML,那你很可能是在走弯路,除非你是在写一个只用一次的脚本,而且这个脚本是针对一个固定且安全的内容文件。如果这个脚本是要处理任何HTML输入,那你该怎么处理像 <a title='growth > 8%' href='#something'> 这样的情况呢?

不管怎样,下面的方法对我来说是有效的:

>>> import re
>>> re.split('(<[^>]*>)', '<body><table><tr><td>')[1::2]
['<body>', '<table>', '<tr>', '<td>']
80
d = ">"
for line in all_lines:
    s =  [e+d for e in line.split(d) if e]

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

撰写回答