如何在Python中提取方法的文档字符串并移除无意义空格?
解决Python文档字符串多余缩进问题
刚好碰到过这个问题!Python标准库的inspect模块里有个完美的工具——cleandoc(),专门用来处理这种文档字符串的缩进问题,完全符合你的需求:它会移除那些为了代码排版而加的公共缩进,但保留文档里你故意设置的相对缩进,同时还会清理掉首尾的空白行。
先看第一个例子的修改版:
import inspect class MyClass: def my_method(self): """This is the help message, on multiple lines. """ pass print(inspect.cleandoc(MyClass.my_method.__doc__))
执行结果就是:
This is the help message, on multiple lines.
再看第二个你关心的带有意缩进的例子:
import inspect class MyClass2: def my_method(self): """This is the help message, on multiple lines. This one is intentionally more indented. """ pass print(inspect.cleandoc(MyClass2.my_method.__doc__))
执行结果完全符合你的期望:
This is the help message, on multiple lines.
This one is intentionally more indented.
原理说明
inspect.cleandoc()的工作逻辑很贴心:
- 首先会去掉文档字符串首尾的空白行
- 然后找出所有非空行中最小的缩进空格数(也就是那些为了对齐代码加的公共缩进)
- 最后把每一行开头的这个最小缩进量去掉,但是如果某行的缩进比这个最小值多,多出来的部分会保留下来——这就正好保住了你故意设置的缩进格式
不用自己写正则或者手动处理,标准库直接搞定,稳得很!
内容的提问来源于stack exchange,提问作者Codoscope
相关产品推荐
相关产品推荐

