【问题标题】:How do I replace the text of a nested tag in BeautifulSoup4?如何替换 BeautifulSoup4 中嵌套标签的文本?
【发布时间】:2017-11-27 10:24:13
【问题描述】:

我正在开发一个为 reddit 的评论格式化 HTML 的程序。例如,如果我有:

<i> This is Italics <b> but this is bold and italics</b>  and back to italics <i>

我想把它格式化为

*This is Italics* ***but this is bold and italics*** *and back to italics*

所以它会产生: 这是斜体 但这是粗体 又是斜体

我无法找到标签内的所有标签并用适量的星号替换它们,而不会弄乱格式。我尝试了几件事,但最近的是:

italics = soup.find_all('i')
for i in range(len(italics)):
    bold = italics[i].find_all('b')
    for j in bold:
        bold[i].replace_with('***' + bold[i].text + '***')

但是在尝试编辑嵌套标签时出现错误,我不想用 *** 编辑每个粗体标签,只编辑斜体内的标签,以便保持格式,其余的我可以更改为 **。

【问题讨论】:

    标签: python html parsing beautifulsoup markdown


    【解决方案1】:

    也许像这样更容易(理解)。

    italics = soup.find_all('i')
    for i in italics:
        print(i.b)
        if i.b:
            i.b.replace_with('***' +i.b.text +'***')
    
    print(soup)
    

    还有整个代码,虽然很笨,但它可以工作

    italics = soup.find_all('i')
    for i in italics:
        print(i.b)
        if i.b:
            i.b.replace_with('* ***'+ i.b.text +'*** *')
        i.replace_with('*'+i.text+ '*')
    
    print(soup)
    

    【讨论】:

      猜你喜欢
      • 2016-11-08
      • 1970-01-01
      • 2023-01-12
      • 2011-07-10
      • 2017-05-23
      • 1970-01-01
      • 2012-10-30
      • 1970-01-01
      • 2015-11-19
      相关资源
      最近更新 更多