前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >str.strip 你可能不知道的坑!!!

str.strip 你可能不知道的坑!!!

作者头像
不止于python
发布2022-05-31 20:24:04
3100
发布2022-05-31 20:24:04
举报
文章被收录于专栏:不止于python

01

开始之前, 先看一行代码

代码语言:javascript
复制
In [44]: "review.rb".strip(".rb")

猜猜结果是什么

按照目前我的理解结果应该是这样

代码语言:javascript
复制
"review"

但正确结果是

代码语言:javascript
复制
In [44]: "review.rb".strip(".rb")
Out[44]: 'eview'

02

google了一下, 还是没弄懂到底是为什么?

只好找官网了

看到这里就明白了, 原来在strip的时候, ".rb"并不是一个整体, 而是三个字符, 会移除以"." "r", "b"开头或结尾的字符, 当遇到非"." "r" "b"三个字符的时候, 就会停止查找.

03

在看几个例子就明白了

代码语言:javascript
复制
# 删除开头的rb和结尾的.rb
In [45]: "rbeview.rb".strip(".rb")
Out[45]: 'eview'

# 删除开头的br和结尾的.rb
In [46]: "breview.rb".strip(".rb")
Out[46]: 'eview'

# 删除结尾的.rb(a开头, 没有在".", "r", "b"中)
In [47]: "areview.rb".strip(".rb")
Out[47]: 'areview'

# 删除开头的rb.和结尾的.rb
In [48]: "rb.eview.rb".strip(".rb")
Out[48]: 'eview'

# 删除结尾的.rb(a开头)
In [49]: "arb.eview.rb".strip(".rb")
Out[49]: 'arb.eview'

所以在使用时应注意, 可以使用lstrip, rstrip

代码语言:javascript
复制
In [50]: "review.rb".lstrip(".rb")
Out[50]: 'eview.rb'
In [51]: "review.rb".rstrip(".rb")
Out[51]: 'review'

也可以使用 replace

代码语言:javascript
复制
In [52]: "review.rb".replace(".rb", "")
Out[52]: 'review'

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-03-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 不止于python 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档