Python 基于特定标记作为分隔符拆分HTML的优雅方法

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

Python/Regex:我正在寻找一种最优雅的方法,将
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>']