- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个如下所示的 html:
<h1>Sanctuary Verses</h1>
<h2>Purpose and Importance of the Sanctuary</h2>
<p>Ps 73:17\nUntil I went into the sanctuary of God; [then] understood I their end.</p>
<p>...</p>
<h2>Some other title</h2>
<p>...</p>
<h3>sub-sub-title</h3>
<p>sub-sub-content</p>
<h2>Some different title</h2>
<p>...</p>...
没有将 p
标记分组的 div
或 section
标记。它非常适合显示目的。我想提取数据以获得所需的输出。
期望的输出:
h
标签应显示为标题并根据其级别嵌套p
标签应添加到 h
标签指定的特定标题下的内容{
"title": "Sanctuary Verses"
"contents": [
{"title": "Purpose and Importance of the Sanctuary"
"contents":["Ps 73:17\nUntil I went into the sanctuary of God; [then] understood I their end.",
"...."
]
},
{"title": "Some other title"
"contents": ["...",
{"title": "sub-sub-title"
"content": ["sub-sub-content"]
}
]
},
{"title": "Some different title"
"content": ["...","..."]
}
}
我编写了一些解决方法代码来帮助我获得所需的输出。我想知道哪种方法是获得所需输出的最简单方法
最佳答案
这是一种堆栈问题/图问题。我们称它为一棵树吧。 (或文件或其他任何东西。)
我认为你的初始元组可以改进。 (文本、深度、类型)
stack = []
depth = 0
broken_value = -1
current = {"title":"root", "contents":[]}
for item in list_of_tuples:
if item[1]>depth:
#deeper
next = { "title":item[0], "contents":[] }
current["contents"].append(next)
stack.append(current)
current=next
depth = item[1]
elif item[1]<depth:
#shallower closes current gets previous level
while depth>item[1]:
prev = stack.pop()
depth = depth-1
current = {"title":item[0], "content":[]}
stack[-1].append(current)
depth=item[1]
else:
#same depth
if item[2]==broken_value:
#<p> element gets added to current level.
current['contents'].append(item[0])
else:
#<h> element gets added to parent of current.
current = {"title":item[0], "content":[]}
stack[-1]["contents"].append(current)
broken_value = item[2]
这将创建一个任意深度图,假设深度增加 1,但可以减少任意数量。
最好跟踪字典中的深度,以便一次可以移动多个深度。不仅仅是“标题”和“内容”,还可以是“标题”、“深度”和“内容”
说明
堆栈跟踪打开的元素,当前元素是我们正在构建的元素。
如果我们发现深度>大于当前深度,那么我们将当前元素放入堆栈(它仍然是打开的)并开始处理下一级元素。
如果深度小于当前元素,我们会将当前元素和父元素关闭到相同的深度。
最后,如果深度相同,我们决定它是刚刚添加的“p”元素,还是关闭当前并开始新当前的另一个“h”元素。
关于Python3 : How to convert plain html into nested dictionary based on level of `h` tags?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59929011/
文件 A 包含 hash:plain文件 B 包含用户名:hash需要的输出用户名:plain有什么办法可以在 shell 中做到这一点吗? 最佳答案 使用带有cut的命令替换: echo $(cut
我可以看到来自邮件服务器的许多 ehlo 命令回显,如下所示: 我想知道“250-AUTH LOGIN PLAIN”和“250-AUTH=LOGIN PLAIN”有什么区别?谢谢 最佳答案 它们的意思
我试图了解两者之间的区别: 一个“普通” elasticsearch查询,它将与术语查询匹配,并返回一定数量的匹配。 和一个过滤的查询(因此使用过滤器)将返回相同的匹配数。 这是术语查询: GET _
我正在开发一个可以接收文件 url 的应用程序,并且应该根据文件类型(音频、视频、图像)做不同的事情。所以我以这种方式获取文件的内容类型: URLConnection connection = url
近期在大规模基础模型上的进展引发了对训练高效大型视觉模型的广泛关注。一个普遍的共识是必须聚合大量高质量的带注释数据。然而,鉴于计算机视觉中密集任务(如目标检测和分割)标注的固有挑战,实际的策略是
Nodemailer 使用完全相同的配置正常工作了几个月。 var smtpTransport = nodemailer.createTransport({ service: "Zoho", auth
我使用的是来自非正统终端的gradle,因此Gradle的传统“漂亮”输出不起作用。 有什么方法可以在〜/ .gradle / gradle.properties中指定每个gradle命令都应使用--
在 Julia 中,你不能存储这样的字符串: str = "\mwe" 因为有一个反斜杠。因此,以下内容可以帮助您防止这种情况发生: str = "\\mwe" "$,\n" 和许多其他符号也会发生同
我需要将 data.frame 对象“转换”为纯文本(如 print 输出到控制台。 到目前为止,我创建了以下函数(使用 stringr 包),但我想知道是否存在已实现的函数或更有效的方法: toSt
在 Julia 中,你不能存储这样的字符串: str = "\mwe" 因为有一个反斜杠。因此,以下内容可以帮助您防止这种情况发生: str = "\\mwe" "$,\n" 和许多其他符号也会发生同
我正在编写一个登录面板来访问管理面板。数据(用户名和密码)存储在 MySQL 数据库(类型:InnoDB)中。在表中查看密码以纯文本形式存储,在字段密码中我有:{普通}密码。 调整我已有的代码时,我遇
我正在尝试使用类名 Plain Javascript 获取第一个子元素。 我正在尝试编写自己的表单验证并尝试附加错误消息并将其删除。如果错误消息已经存在,则不要追加。 如果您帮助我完成第一部分,为 c
问题:使元组的元组“简单”的最佳方法是什么?例如。一维。 案例 1 template auto process_field(Field&& field){ // or another std
我正在编写一个 Web 应用程序 API,当有人访问 URL 时,它会返回文本数据。我将内容类型设置为“文本/纯文本”,但是当我使用 Chrome 访问它时,它会下载一个包含信息的文件,而不是显示它。
我尝试将文本粘贴到多个字段中,但只清除了第一个元素的格式,而不是第二个元素等。 我发现了这个问题 https://stackoverflow.com/a/12028136/3955607这工作正常,但
我有一个查询,它使用聚合函数将值的 maximum absolute 分配给表中的另一列。问题是查询完成时间需要花费大量时间(大约加起来 10-15 秒)。这是查询的样子: UPDATE calcul
我在尝试使用 text/plain 时收到以下响应: { "type": "https://tools.ietf.org/html/rfc7231#section-6.5.13", "
我想做的是- For Clients to Broker communication - use OAUTHBEARER authentication For Broker to Broker com
我了解 th:if 如何用于 html 模板,但是当您期望纯文本(用例:纯文本电子邮件模板)时,我没有找到有关如何执行此操作的任何线索。 到目前为止,我尝试过: Dear [[${contact
我有以下代码: NSURL *URL = [NSURL URLWithString:[@"some-address"]]; NSMutableURLRequest *request = [NSMuta
我是一名优秀的程序员,十分优秀!