这段代码几乎实现了我所需要的功能..
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,则很可能做错了,除非您编写的是针对固定和安全内容文件的一次性脚本。如果它应该适用于任何HTML输入,那么您将如何处理类似于<a title='growth > 8%' href='#something'>
这样的内容?
无论如何,以下方法适合我:
>>> import re
>>> re.split('(<[^>]*>)', '<body><table><tr><td>')[1::2]
['<body>', '<table>', '<tr>', '<td>']
re.split("(.*\n?)", "my\nstr\ning")[1::2]
。 - Seth Robertsonimport re
s = '<html><head>'
re.findall('[^>]+>', s)
只需将其拆分,然后对于数组/列表中的每个元素(除了最后一个),在其后添加一个尾随的">"。
"<html>>body".split('>')
这样分割两个>
会在中间创建一个空元素["<html", "", "body"]
。除非你想要多个>
在处理后仅生成单个>
,那么您可以先删除这些空字符串。 - yyny
['<html','>','<head','>','']
不同于['<html>','<head>']
。我知道已经过了几个月,但我刚刚投票重新开放。如果你也这样做,其他人可能会接手完成它? - user1717828"<html><head>".split(">")
会产生三个字符串,分别是['<html','<head', ""]
,而不是列表['<html','<head']
。 - undefined