Python 基于特定标记作为分隔符拆分HTML的优雅方法
Python/Regex:我正在寻找一种最优雅的方法,将Python 基于特定标记作为分隔符拆分HTML的优雅方法,python,regex,Python,Regex,Python/Regex:我正在寻找一种最优雅的方法,将HTML字符串拆分为一个字符串数组,其中分隔符是script标记。因此: <p> paragraph one </p> <script src="https://something.com/script.js"></script> <p> paragraph two </p> <p> paragraph three &l
HTML
字符串拆分为一个字符串数组,其中分隔符是script
标记。因此:
<p> paragraph one </p>
<script src="https://something.com/script.js"></script>
<p> paragraph two </p>
<p> paragraph three </p>
<script src="https://something.com/script.js"/>
<p> paragraph four </p>
第一段
第二段
第三段
第四段
我将得到以下字符串数组:
[
'<p> paragraph one </p>',
'<script src="https://something.com/script.js"></script>',
'<p> paragraph two </p><p> paragraph three </p>',
'<script src="https://something.com/script.js"/>',
'<p> paragraph four </p>'
]
[
“第一段”,
'',
“第二段第三段”,
'',
“第四段”
]
我希望有一个指向正确方向的指针。如果您不想安装外部软件包,此正则表达式与行尾拆分相结合应该可以完成以下工作:
import re
data=re.sub(r'</p>\n.*?<p>', '</p><p>', s).split('\n')
for line in data:
print(line)
重新导入
data=re.sub(r'\n.*?','',s).split('\n')
对于行输入数据:
打印(行)
产出:
<p> paragraph one </p>
<script src="https://something.com/script.js"></script>
<p> paragraph two </p><p> paragraph three </p>
<script src="https://something.com/script.js"/>
<p> paragraph four </p>
第一段
第二段第三段
第四段
正如Ronald所展示的,您可以在某种程度上使用regex操作html,即使这通常不是一个好主意,但您希望脚本标记成为分隔符,对吗?您希望在输出中包含分隔符
捕获这两种样式
\n请使用beautiful soup
而不是regex。
import re
text = '''
<p> paragraph one </p>
<script src="https://something.com/script.js"></script>
<p> paragraph two </p>
<p> paragraph three </p>
<script src="https://something.com/script.js"/>
<p> paragraph four </p>
'''
regex = '(\<script.*\</script\>|\<script.*/\>)'
m = re.split(regex, text.replace("\n", ""))
print(m)
['<p> paragraph one </p>', '<script src="https://something.com/script.js"></script>', '<p> paragraph two </p><p> paragraph three </p>', '<script src="https://something.com/script.js"/>', '<p> paragraph four </p>']