首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在美汤中使用replaceWith时动态指定标签

在美汤中使用replaceWith时动态指定标签
EN

Stack Overflow用户
提问于 2009-05-21 04:55:47
回答 2查看 585关注 0票数 0

之前,我问了this问题,并得到了这个BeautifulSoup示例代码,经过当地的一些咨询后,我决定使用它。

代码语言:javascript
复制
>>> from BeautifulSoup import BeautifulStoneSoup
>>> html = """
... <config>
... <links>
... <link name="Link1" id="1">
...  <encapsulation>
...   <mode>ipsec</mode>
...  </encapsulation>
... </link>
... <link name="Link2" id="2">
...  <encapsulation>
...   <mode>udp</mode>
...  </encapsulation>
... </link>
... </links>
... </config>
... """
>>> soup = BeautifulStoneSoup(html)
>>> soup.find('link', id=1)
<link name="Link1" id="1">
<encapsulation>
<mode>ipsec</mode>
</encapsulation>
</link>
>>> soup.find('link', id=1).mode.contents[0].replaceWith('whatever')
>>> soup.find('link', id=1)
<link name="Link1" id="1">
<encapsulation>
<mode>whatever</mode>
</encapsulation>
</link>

唯一的问题是,这个示例有一个硬编码的标记值(在本例中是"mode"),并且我需要能够在指定的"link“标记内指定任何标记。简单的变量替换似乎行不通。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-05-21 05:09:19

尝试使用getattr(soup.find('link', id=1), sometag),因为现在在soup.find('link', id=1).mode中有一个硬编码的标记--毕竟getattr是获取其名称作为字符串变量保存的属性的方法!

票数 2
EN

Stack Overflow用户

发布于 2009-05-21 15:28:32

不需要使用getattr

代码语言:javascript
复制
sometag = 'mode'
result = soup.find('link', id=1).find(sometag)
print result
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/891434

复制
相关文章

相似问题

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