python - 将包含 html 标记的字符串拆分为 Python 中的构建块
问题描述
我有字符串,例如:
part one<p>part two</p><p>part three <a href="/links/link1">part four</a>part five</p><li>part six <a href="/links/link2">part seven</a>part eight</li>
我想生成一个python列表,如:
['part one','part two','part three','/links/link1','part four','part five','part six','/links/link2','part seven','part eight']
列表中的顺序应遵循字符串中出现的顺序。字符串可能没有/更多/更少标签和嵌套标签。
我已经阅读了一些相当相似的问题的答案,但找不到解决这个特定问题的答案。我尝试过 BeautifulSoup 之类的包,但无法提取所有部分并按出现顺序。
我很感激任何帮助。谢谢。
解决方案
您可以使用内置的 HTML 解析器类来遍历字符串并跟踪您需要的位。
from html.parser import HTMLParser
class BuildingBlocksParser(HTMLParser):
def __init__(self):
super().__init__()
self.bits = []
def handle_starttag(self, tag, attrs):
for key, value in attrs:
self.bits.append(value)
def handle_data(self, data):
self.bits.append(data)
parser = BuildingBlocksParser()
parser.feed(
'part one<p>part two</p><p>part three <a href="/links/link1">part four</a>part five</p><li>part six <a href="/links/link2">part seven</a>part eight</li>'
)
print(parser.bits)
输出
['part one', 'part two', 'part three ', '/links/link1', 'part four', 'part five', 'part six ', '/links/link2', 'part seven', 'part eight']
推荐阅读
- javascript - GraphicsMagick 节点写入创建空图像
- python - 存储从 python 脚本中执行的 curl 命令的内容
- python - 在程序启动时从 Python 初始化 Kivy 小部件值
- java - 使用接口或超类作为数据类型来实例化子类
- amazon-web-services - 未捕获的异常“Predis\Response\ServerException”,消息为“MOVED 7369”
- r - 使用 eclat 挖掘频繁项集时的“零频繁项”
- angular - JHipster 4.14.1:输入类型="datetime-local" 未绑定
- javascript - 重置应用于日历单元格的 css 类
- python - 如何从python中的docker容器获取文件
- javascript - 在调整大小时将图像高度应用于 Div