工作中遇到需求,需要将爬取设备的状态展现出来,为了输出美观,我想将其以树枝的形状展现,如图所示:
首先不考虑设备类型,只考虑所有状态的分布。为了让字符串不要包含当前缩进里的空格,我们必须将代码按下面的方式进行组织:
可以看出,视觉效果被狠狠地破坏了,一点都不美丽,我不允许。
搜索发现,其实有蛮多方法可以解决这个问题,比如将这个多行字符串设置为全局变量,但总感觉差点意思。一个好办法就是今天的主题 —— 标准库 textwrap 中的 dedent 方法,它会删除字符串左侧的空白缩进,从而获得美丽的视觉效果,代码如图,效果自己想象:
应用如此美丽的方法后,私认为万事俱备,只要将品牌对应信息用前面的 |-- 和 \n 拼接,这不就一碟小菜?但事实并非如此:
事实上,textwrap 库的 dedent 方法对多行传入字符串的换行符并不适配 ,它还是会狠狠地把你扔到最前面!我理解为 detent 方法自身的不足。
接受现实后,我开始尝试寻找新的方法,毕竟我舍不得这美丽的缩进,经过多种方法的尝试,最终选定方案如下:
str 类型的 maketrans 方法可以建立替换字符的规则,字符串可以调用自带的 translate 方法应用规则。
需要注意的是,将 \n 替换为 \n |-- 时,空格数量对应的是 离最前面的距离,毕竟 textwrap.dedent 方法的缺陷就在这里!
未闻 Code·知识星球开放啦!
一对一答疑爬虫相关问题
职业生涯咨询
面试经验分享
每周直播分享
......
未闻 Code·知识星球期待与你相见~
一二线大厂在职员工
十多年码龄的编程老鸟
国内外高校在读学生
中小学刚刚入门的新人
在“未闻 Code技术交流群”等你来!
入群方式:添加微信“mekingname”,备注“粉丝群”(谢绝广告党,非诚勿扰!)