python - 如何删除标记作为兄弟元素存在的python html文本中的所有元素
问题描述
我需要在 python 中解析脏的 html 字符串,我需要消除所有旁边有兄弟标签的文本。
例如,我需要转换这个 html。
<p class="se_textarea">
x3C!-- SE3-TEXT { -->
<span>
<b>식탁등/카페조명/매장/포인트조명/pc방/티 테이블 등등</b>
nnnnnnn
<br>
</span>
<span>
<b>어느곳에 설치 하셔도 예쁜.. </b>
<br>
</span>
</p>
到这个 html。
<p class="se_textarea">
<span>
<b>식탁등/카페조명/매장/포인트조명/pc방/티 테이블 등등</b>
<br>
</span>
<span>
<b>어느곳에 설치 하셔도 예쁜.. </b>
<br>
</span>
</p>
由于x3C!-- SE3-TEXT { -->
是标签的兄弟,<span>
并且 nnnnn 是<b>
标签的兄弟,我需要删除此文本,而标签식탁등/카페조명/매장/포인트조명/pc방/티 테이블 등등
中的唯一文本<b>
我不需要删除它。
解决方案
Whelp,这是非常具体的部分原因,因为您实际上只提供了一个示例,所以我不确定会出现什么样的标签,所以您有 2 个选项。
确实,正则表达式通常不是 html 的最佳选择,但我希望这会有所帮助。BeautifulSoup 或 lxml 最终可能会更好。
使用 re.sub (对于 Python3),如果格式相对一致,您可以使用距离,所以在这里我说<
如果前面有 7 个或更多空格,则替换任何不以开头的文本
>>> import re
>>> string = '''<p class="se_textarea">
<span>
<b>식탁등/카페조명/매장/포인트조명/pc방/티 테이블 등등</b>
nnnnnnn
<br>
</span>
<span>
<b>어느곳에 설치 하셔도 예쁜.. </b>
<br>
</span>
</p>'''
>>> print(re.sub('(?m)\n[\ ]{7,}(?!<)[\S]+(?=\n|$)', '', string))
#OUTPUT
<p class="se_textarea">
<span>
<b>식탁등/카페조명/매장/포인트조명/pc방/티 테이블 등등</b>
<br>
</span>
<span>
<b>어느곳에 설치 하셔도 예쁜.. </b>
<br>
</span>
</p>
.
或者您可以使用特定的正则表达式并在必要时替换标签名称
>>> import re
>>> string = '''<p class="se_textarea">
<span>
<b>식탁등/카페조명/매장/포인트조명/pc방/티 테이블 등등</b>
nnnnnnn
<br>
</span>
<span>
<b>어느곳에 설치 하셔도 예쁜.. </b>
<br>
</span>
</p>'''
>>> print(re.sub(r'(<span>[\S\s]*?<[\S\s]*?>[\S\ ]*?</[\S\s]*?>[\s]*?)([\S\s]*?)(\n[\ ]+<)', r'\1\3', string))
#OUTPUT
<p class="se_textarea">
<span>
<b>식탁등/카페조명/매장/포인트조명/pc방/티 테이블 등등</b>
<br>
</span>
<span>
<b>어느곳에 설치 하셔도 예쁜.. </b>
<br>
</span>
</p>
推荐阅读
- python - 在 Django 中使用“_id”
- java - 当我包含共享首选项时,活动崩溃
- python - 如何使用 Conda 安装 Tensorflow 2.0?
- node.js - 为什么在这种情况下 MediaStream 对象是空的?
- rx-java2 - 如何使用 io.vertx.reactivex.ext.web.client.WebClient 的 rxSendStream 对字符串进行 Http POST
- c - 在C中逐个字符地将字符串的一部分复制到一个新的字符串中
- gradle - Groovy 编译失败,stackoverflow 无法重现
- javascript - document.querySelectorAll 奇怪的行为
- javascript - 如何在 javascript 中从 base64 数据创建 xls 文件
- python - TensorFlow Python - 有没有办法将 tensorflow_datasets 数据集插入 ImageGenerator?