str.strip 你可能不知道的坑!!!
01
开始之前, 先看一行代码
1 | In [44]: "review.rb".strip(".rb") |
猜猜结果是什么
按照目前我的理解结果应该是这样
1 | "review" |
但正确结果是
1 | In [44]: "review.rb".strip(".rb") |
02
google了一下, 还是没弄懂到底是为什么?
只好找官网了

看到这里就明白了, 原来在strip的时候, “.rb”并不是一个整体, 而是三个字符, 会移除以**”.” “r”, “b”开头或结尾的字符, 当遇到非“.” “r” “b”**三个字符的时候, 就会停止查找.
03
在看几个例子就明白了
1 | # 删除开头的rb和结尾的.rb |
所以在使用时应注意, 可以使用lstrip, rstrip
1 | In [50]: "review.rb".lstrip(".rb") |
也可以使用 replace
1 | In [52]: "review.rb".replace(".rb", "") |
04
python官方文档
https://docs.python.org/zh-cn/3/library/stdtypes.html?highlight=strip#str.strip
strip源码
https://github.com/python/cpython/blob/master/Objects/bytesobject.c#L1875
https://github.com/python/cpython/blob/master/Objects/bytesobject.c#L1916

作者:
胖胖不胖
版权声明:
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 不止于python
感谢您的支持,我会继续努力!
微信支付
支付宝