我有一块XML需要将一些元素插入到
中<importer in="!SRCFILE!" media="movie">
<video-out id="video_2_importer"></video-out>
<audio-out id="audio_2_importer"></audio-out>
</importer>
我需要做的是在此块中插入一些选项,以便我的输出如下所示:
<importer media="movie" in="!SRCFILE!">
<video-out id="video_2_importer"></video-out>
<audio-out id="audio_2_importer"></audio-out>
<option name="start-time" value="60"></option>
<option name="end-time" value="120"></option>
</importer>
我已成功使用bs4查找元素并创建新标签,但似乎参数'name'是bs4中的保留字。我尝试了以下内容:
in_point = soup.new_tag('option', **{'value':'60','name':'start-time'})
但是我收到以下错误
TypeError: new_tag() got multiple values for keyword argument 'name'
如果我从我的dict中删除'name':'start-time',它会正确插入。如果我将“名称”更改为任何其他文本,则可以。因此,执行以下操作可以创建正确的标记。
in_point = soup.new_tag('option', **{'value':'60','stuff':'start-time'})
我知道我可能在语法上做错了,允许我使用属性'name',我只是不知道是什么。
答案 0 :(得分:2)
在这种情况下,您可以通过以下方式创建Tag
的实例:
from bs4 import BeautifulSoup, Tag
in_point = Tag(builder=soup.builder,
name='option',
attrs={'value':'60','name':'start-time'})
这基本上是new_tag()
在幕后做的事情:
def new_tag(self, name, namespace=None, nsprefix=None, **attrs):
"""Create a new tag associated with this soup."""
return Tag(None, self.builder, name, namespace, nsprefix, attrs)
答案 1 :(得分:0)
Beautiful Soup使用字典来构建标签。您不需要导入标签即可执行此操作。只需在创建字典中的key:value时创建一个属性即可。 例如:importer ['media'] =“电影”