gpt4 book ai didi

python - 关闭打开的标签而不用

换行

转载 作者:太空宇宙 更新时间:2023-11-03 17:54:12 26 4
gpt4 key购买 nike

我正在尝试为我的表单编写一个干净的方法,以便如果用户留下打开的内联标记,它将被关闭,例如:

Here's an <b> open tag  -> Here's an <b> open tag</b>
<i>Here are two <b>open tags -> <i>Here are two <b> open tags</b></i>

我执行此操作的代码是:

def clean_custom_title(self):
title = self.cleaned_data.get('custom_title')
if title:
title = lxml.etree.tostring(lxml.html.fromstring(title))
return title

这非常接近工作,除了当字符串不以开放标记开头时,就像我的第一个示例一样,它将所有内容包装在 <p> 中。标签所以我得到

Here's an <b> open tag -> <p>Here's an <b> open tag</b></p>

我不能只删除外部标签,因为它们可能是正确的,就像我的第二个示例一样。我不担心可能的输入已经包含 p标签。我可以想象用删除 <p> 来删除它们但这看起来很老套而且很恶心。

注意,我一直在使用 lxml。我认为 BS4 也会更好,但这不是我的决定。

最佳答案

将所有内容包装在一次性标签中,然后获取最外层元素的内部内容,如下所示:

def clean_custom_title(self):
title = self.cleaned_data.get('custom_title')
if title:
title = "<foo>%s</foo>"%title
title = lxml.html.fromstring(title)
# title = lxml.some_function(title) # strip <foo> in a 'proper' way
title = lxml.etree.tostring(title)
title = title[5:-6] # This is a hack to illustrate the premise
return title

关于python - 关闭打开的标签而不用 <p> 换行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28728001/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com