首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何替换BeautifulSoup4中嵌套标记的文本?

如何替换BeautifulSoup4中嵌套标记的文本?
EN

Stack Overflow用户
提问于 2017-06-23 18:53:20
回答 1查看 173关注 0票数 0

我正在编写一个程序,该程序将HTML格式设置为供编辑的注释。例如,如果我有:

代码语言:javascript
复制
<i> This is Italics <b> but this is bold and italics</b>  and back to italics <i>

我想把它格式化为

代码语言:javascript
复制
*This is Italics* ***but this is bold and italics*** *and back to italics*

因此,它将产生:这是斜体,但这是粗体并返回斜体。

我很难找到标签中的所有标签,并用正确数量的星号替换它们,而不影响格式。我试过几件事,但最近的一件事是:

代码语言:javascript
复制
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 + '***')

但是当我尝试编辑嵌套标记时会出现错误,我不想用*编辑每个粗体标记,只编辑斜体中的标记,这样它就能保持格式,其余的我可以更改为**。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-23 19:45:28

也许像这样的事情更容易理解。

代码语言:javascript
复制
italics = soup.find_all('i')
for i in italics:
    print(i.b)
    if i.b:
        i.b.replace_with('***' +i.b.text +'***')

print(soup)

所有的代码,很蠢,但它很有效

代码语言:javascript
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44728205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档