【问题标题】:Adding chevrons and underscores with BeautifulSoup使用 BeautifulSoup 添加人字形和下划线
【发布时间】:2021-11-22 20:37:43
【问题描述】:

我希望 BeautifulSoup 将这样的字符串添加到我的 HTML 页面中:

{{< Transfer/component_short_name  >}} 

(如果你对为什么感兴趣,这是一个 Hugo 简码,一种降价变量)

当我在 python 中以编程方式构建它并使用tag.insert_after() 添加它时,文档中的最终结果如下所示:

{{&lt; Transfer/component\_short\_name  &gt;}}

这当然不一样。

我管理了 V 形的解决方法 >

我尝试了各种方法,例如 var_name = var_name.replace("\\_", "_") ,但都不起作用。

【问题讨论】:

  • 您可以插入为 cmets 然后删除吗? stackoverflow.com/a/54318271
  • 我没有看到 \_ 转义,你能添加一个简短的例子吗?你用的是哪个汤解析器?

标签: python beautifulsoup hugo hugo-shortcode


【解决方案1】:

我看不到使用 BeautifulSoup 避免 &amp;lt; 和 &amp;gt; 转换的方法,但正如您所说,它们可以在之后进行转换。在以下示例中,没有下划线转义:

from bs4 import BeautifulSoup
import re

shortcode = "{{< Transfer/component_short_name  >}}"
html = "<html><body><h1>hello world</h1></body>"
soup = BeautifulSoup(html, "html.parser")
soup.h1.insert_after(shortcode)
fixed = re.sub('\{\{&lt;|&gt;\}\}|\\\_', lambda x: {'{{&lt;' : '{{<', '&gt;}}' : '>}}', '\\_' : '_'}[x.group(0)], str(soup))

print(fixed)

将 HTML 表示为:

<html><body><h1>hello world</h1>{{< Transfer/component_short_name  >}}</body></html>

在这里,\_ 替换似乎不需要,但为了完整起见,我已将其包含在内。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-01
    • 2013-03-08
    • 1970-01-01
    • 2017-09-06
    相关资源
    最近更新 更多