最近解析一个接口请求,有时成功,有时失败。一直以来关注的重点是产品提供的接口是不是有问题,他们是不是悄悄改了什么东西,因为产品很不稳定,也没有这个必要,调试了我一上午,终于找到问题所在。没想到python的strip函数在作怪。先来看现象。我想获取输入标签text='value="vrQzyLaHwrWiNdeW-hcgW-JovDCXoWhvtNA_wisDg47T5FWM9-mL_cVZ4fe_RWEzsgbTVvLOXDXFp2uzXi6z1w==">'然后我使用python的lstrip和rstrip方法删除value="和">但是当我执行了它,我没有得到我想要的。结果是这样的,比预期多去掉了一个v'rQzyLaHwrWiNdeW-hcgW-JovDCXoWhvtNA_wisDg47T5FWM9-mL_cVZ4fe_RWEzsgbTVvLOXDXFp2uzXi6z1w=='排错及原因我们理所当然的认为去掉匹配的是一整串,其实不是这样的(这个是内置函数,源码用c实现,具体实现看不到),通过反复实验,从官方文档看,参数其实是一个字符集。每次删除一个字符时,将字符集中的字符与要删除的字符串的开头/结尾进行比较。如果匹配则去掉上面的,继续循环直到没有匹配。最后我们看几个例子进行分析:str='value""aluev'strip_char_set='value"'使用lstrip方法从左边去掉循环str,从左边开始遍历:(1)v在字符集strip_char_set中,去掉v,这一步的结果为'alue""aluev"(2)a在字符集strip_char_set中,去掉v,这步的结果依次为'lue""aluev",最后的结果是一个空字符串然后看这个'Arthur:three!'.lstrip('Arthur:')结果是'ee!'解析:str='Arthur:three!'strip_char_set='Arthur:'用到的lstrip方法,从左边取出循环str,从左边遍历:(1)A在字符集strip_char_set中,取出v,则这一步的结果是“rthur:三!”(2)右在字符集strip_char_set中,去掉v,这一步的结果是'thur:three!'依次直到e不在字符集中,循环结束,结果为'ee!还不完美,想截断整个字符串怎么办,除了使用正则表达式或者其他方法,python3.9新增了两个函数,可以满足我们的需求,但是现在不得不使用python3.7由于某些原因,我只需要观看
