Python中如何查看Beautiful Soup的prettify方法第二个参数formatter的合法取值?

soup=bs(html)
soup.prettify(encoding=None, formatter='minimal')

prettify()方法的第二个参数 formatter 到底有几个合法的取值呢?
我们只知道有 minimal,还有什么呢?我们都不知道.
怎么找到这些参数的值呢?
这是 python 最不好的一个地方,方法的说明里不写明白,使用者怎么寻找这些特定的取值呢?


Python中如何查看Beautiful Soup的prettify方法第二个参数formatter的合法取值?

5 回复

这个锅 python 不背。。。开发者不写注释神仙也没办法啊


在Beautiful Soup的prettify方法中,formatter参数用于控制输出格式。合法取值主要有以下几种:

  1. formatter="minimal"(默认值):只对特殊字符进行转义
  2. formatter="html":对HTML特殊字符进行转义
  3. formatter="html5":类似html但遵循HTML5规范
  4. formatter=None:不进行任何转义
  5. 自定义函数:可以传入自定义的格式化函数

查看这些选项最直接的方法是查看Beautiful Soup的源码。在bs4/formatter.py文件中,定义了HTMLFormatter类和相关常量。你也可以通过以下方式查看:

from bs4 import BeautifulSoup
import bs4.formatter

# 查看可用的格式化器
print(bs4.formatter.HTMLFormatter.REGISTRY.keys())
# 输出类似:dict_keys(['minimal', 'html', None, 'html5'])

# 或者直接查看源码中的定义
import inspect
print(inspect.getsource(bs4.formatter.HTMLFormatter))

实际使用示例:

html = '<p>Hello & World</p>'
soup = BeautifulSoup(html, 'html.parser')

print("默认格式化:")
print(soup.prettify(formatter="minimal"))

print("\nHTML格式化:")
print(soup.prettify(formatter="html"))

print("\n自定义格式化函数:")
def my_formatter(s):
    return s.upper()
print(soup.prettify(formatter=my_formatter))

总结:查看源码或使用bs4.formatter模块获取合法值。

哇,我怎么一看就在官方文档里看见了。

https://www.crummy.com/software/BeautifulSoup/bs4/doc/#output-formatters

是的,一点一点查看文档,翻遍了,自然能找到.
但通常使用者不是这样使用的.比如我使用 pycharm,
通常我看到代码提示,但不知道具体参数什么意思,于是找到方法定义的地方,
但还是没有 formatter 的具体内容,再找 pycharm 就无能为力了!
我想问的是,不一点点的翻文档,怎么使用 pycharm 这样的工具就能方便的找到 formatter 的具体值有哪些?

把光标移到函数名的位置,按一下 ctrl+Q 看文档。没有的话就只能再去找官方文档了。

回到顶部