如何在new_tag()中指定类属性?

Eri*_*ric 6 python beautifulsoup

我目前正在使用BeautifulSoup4和Python 2.7并尝试使用某个class属性实例化一个新标签.我知道如何使用以下属性style:

div = soup.new_tag('div', style='padding-left: 10px', attr2='...', ...)
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试使用class保留字执行此操作,则会出现错误(语法无效).

div = soup.new_tag('div', class='left_padded', attr2='...', ...) # Throws error
Run Code Online (Sandbox Code Playgroud)

我也尝试过'class'='...',但这也无效.我可以使用Class='...',但输出不符合(所有小写属性名称).

我知道我可以做以下事情:

div = soup.new_tag('div', attr2='...', ...)
div['class'] = 'left_padded'
Run Code Online (Sandbox Code Playgroud)

但这看起来并不优雅或直观.我在文档和Google上的研究都没有结果,因为"类"是一个与我想要的搜索结果无关的常用关键字.

有没有办法可以指定class为属性new_tag()

sen*_*hin 5

这是一个选项:

>>> attributes = {'class': 'left_padded', 'attr2': '...'}
>>> div = soup.new_tag('div', **attributes)
>>> div
<div attr2="..." class="left_padded"></div>
Run Code Online (Sandbox Code Playgroud)

attributes使用**运算符将字典解压缩为关键字参数,对应**attrs于函数签名soup.new_tag().不过,我认为这不比你使用的解决方案更优雅div['class'].

  • IMO这更优雅,因为它将所有属性保持在一起.将问题暂时打开,看看是否出现任何其他解决方案. (2认同)