我目前正在使用BeautifulSoup4和Python 2.7,并尝试使用某个class
属性实例化一个新标记。我知道如何使用style
:
div = soup.new_tag('div', style='padding-left: 10px', attr2='...', ...)
但是,如果我尝试使用class
保留字执行此操作,则会收到错误(语法无效)。
div = soup.new_tag('div', class='left_padded', attr2='...', ...) # Throws error
我也试过'class'='...'
,但这也无效。我可以使用Class='...'
,但输出不符合(所有小写属性名称)。
我知道我可以做以下事情:
div = soup.new_tag('div', attr2='...', ...)
div['class'] = 'left_padded'
但这看起来并不优雅或直观。我在文档和Google上的研究都没有结果,因为“类”是一个与我想要的搜索结果无关的常用关键字。
我是否可以将class
指定为new_tag()
中的属性?
答案 0 :(得分:5)
这是一个选项:
>>> attributes = {'class': 'left_padded', 'attr2': '...'}
>>> div = soup.new_tag('div', **attributes)
>>> div
<div attr2="..." class="left_padded"></div>
使用attributes
运算符将**
字典解压缩为关键字参数,对应**attrs
函数签名中的soup.new_tag()
。不过,我认为这不比使用div['class']
的解决方案更优雅。