我需要将一些文本文件转换为HTML代码.我坚持将列表转换为HTML无序列表.示例来源:
文档中的一些文本
*项目1
*项目2
*项目3
其他一些文本
输出应该是:
some text in the document
<ul>
<li>item 1</li>
<li>item 2</li>
<li>item 3</li>
</ul>
some other text
Run Code Online (Sandbox Code Playgroud)
目前,我有这个:
r = re.compile(r'\*(.*)\n')
r.sub('<li>\1</li>', the_text_document)
Run Code Online (Sandbox Code Playgroud)
这会创建一个没有< ul >
标签的HTML列表.
如何识别第一个和最后一个项目并用< ul >
标签包围它们?
在考虑了一些想法之后,我决定使用第二个正则表达式。所以基本上,在运行第一个正则表达式(来自我原来的帖子,创建标签<li>
)之后,我运行:
r = re.compile(r'(<li>.*?</li>\n(?!\s*<li>))', re.DOTALL)
r.sub('<ul>\\1</ul>', string_with_li_tags)
Run Code Online (Sandbox Code Playgroud)
这将找到标签的第一个匹配项<li>
和组合的最后一个匹配项</li>\n
,而不是后跟<li>
标签(本质上意味着整个列表)并添加<ul>
标签。
编辑:我稍微修改了正则表达式,这样它就不会贪婪了。这样它就可以处理同一文档中的多个列表。唯一的要求是列表项之间没有空格,正如下面提到的@Aprillion
编辑2:修改了否定前瞻以处理列表项之间的空格,因此涵盖了所有情况
归档时间: |
|
查看次数: |
422 次 |
最近记录: |