问题背景

从许多中文的参考文献上,rstrip() 函数的功能被简单描述为 :删除字符串末尾的指定字符(默认为空格),我的理解是,直接去掉末尾指定的字符序列,如我传入的是d,则会去掉末尾的字符d(如果存在),如果传入了字符ad,则去掉末尾的字符ad(如果存在),直到我们开发的服务遇到了一个非常奇怪的bug之后,下面是奇怪问题的复现过程:

>>> s = 'hello_world'
>>> s.rstrip('d') # 去除末尾的字符d
'hello_worl'
>>>
>>> s.rstrip('ld') # 去除末尾的字符 ld
'hello_wor'
>>>
>>> s.rstrip('ad') # 去除末尾字符 ad
'hello_worl' # ??? 为什么 d 被去掉了?
>>>

问题解决

在查了N多的中文参考资料之后,一直没找到出现此现象的原因,于是我拜读了一下python官方的文档:https://docs.python.org/2/library/string.html
官方文档的说明是:Return a copy of the string with trailing characters removed. If chars is omitted or None, whitespace characters are removed. If given and not None, chars must be a string; the characters in the string will be stripped from the end of the string this method is called on.
简单的翻译一下,其意思就是去掉字符串末尾的指定字符,如果传入的字符为空,则去掉字符串末尾的空格,但是我们忽略了重点内容:the characters in the string will be stripped from the end of the string this method is called on,这里面有两个the string,第一个the string指的是用户传入的字符串,如上面的dldad,而第二个the string指的是需要处理的string,这样理解之后,rstrip的功能就彻底明确了,其功能准确的描述就是:删除字符串末尾指定的字符中任意字符,如果为空,则删除字符串末尾的空格
提到了rstrip,就不得不提起lstrip,lstrip和rstrip功能类似,唯一的区别就是rstrip去掉的是字符串末尾的指定字符,而lstrip去掉的是字符开头的指定字符。

总结一下

rstrip和lstrip方法删除的不是传入的整个字符,而是以单个字符为单位删除,如果你传入了一段字符串,如果这段字符串中任何一个字符出现在需删除字符串的开头或末尾,则都将会被删除。如:

>>> s = 'helloworlld'
>>> s.rstrip('ld')
'hellowor'

Python rstrip函数踩坑记录相关推荐

  1. Python Sphinx使用踩坑记录

    描述 使用 pip 安装sphinx后,按照教程建立了一个新的py文件,如下 # run.py def run(name):"""this is how we run:p ...

  2. Python打包工具Pyintealler打包py文件为windows exe文件过程及踩坑记录+实战例子

    Python打包工具Pyintealler打包py文件为windows exe文件过程及踩坑记录+实战例子 目录 Python打包工具Pyintealler打包py文件为windows exe文件过程 ...

  3. 使用Java读取 “Python写入redis” 的数据踩坑记录

    https://my.oschina.net/u/2338224/blog/3061507 使用Java读取 "Python写入redis" 的数据踩坑记录 https://seg ...

  4. mysql 使用sum limit_mysql踩坑记录之limit和sum函数混合使用问题

    问题复盘 本次复盘会用一个很简单的订单表作为示例. 数据准备 订单表建表语句如下(这里偷懒了,使用了自增ID,实际开发中不建议使用自增ID作为订单ID) CREATE TABLE `order` ( ...

  5. 如何运行开源游戏?八分音符酱python版踩坑记录

    如何运行开源游戏?八分音符酱python版踩坑记录 如何从零到一搭建一个python游戏?这篇博客将以八分音符酱介绍详细过程. 下载源代码源代码 搭建python环境 参考此网站 此游戏运行基于pyt ...

  6. VS Code Python 代码智能提示(自动补全)编译环境设置踩坑记录

    VS Code Python 编译环境设置踩坑记录 本菜鸡非常喜欢VS code的简洁风格,而且跟原来再用的VS2017相比简直不要太快,前段时间电脑重装之后又要在windows系统上重新搭建整套环境 ...

  7. TVM: Deep Learning模型的优化编译器(强烈推荐, 附踩坑记录)

    本文作者是阿莱克西斯,原载于知乎,雷锋网(公众号:雷锋网)获得授权转载. (前排提醒,本文的人文内容部分稍稍带有艺术加工,请保持一定的幽默感进行阅读) 关注我最近想法的同学应该知道我最近都在把玩 TV ...

  8. Detectron2 win10踩坑记录

    Detectron2 win10踩坑记录 安装CUDA clone到本地 修改cocoeval.cpp第483行(不同版本行数不一样) 创建虚拟环境 安装pycocotools 安装VS2019或者生 ...

  9. 日常踩坑记录-汇总版

    开发踩坑记录,不定时更新 心得 RTFM 严谨的去思考问题,处理问题 严格要求自己的代码编写习惯与风格 注意 单词拼写 20200207 mybatis plus 自带insert插入异常 sql i ...

最新文章

  1. PWA即将推向所有Chrome平台
  2. PHP文件上传主要代码讲解
  3. java搜索文件_Java如何在目录中搜索文件?
  4. Taro+react开发(76):taro安装
  5. python3 生成器
  6. 十分钟搞定pandas+实战
  7. 2015年6月24日日报
  8. 若依编辑和删除操作按钮不可用怎么办?
  9. 2.NET Core设定数据库种子
  10. windows sesrver2003下搭建DHCP服务器
  11. Abaqus运行fortan报错:“Error in job Job-1: Problem during compilation - D:\test.for”
  12. Android ImageView实现反色显示的方法
  13. 企业风险管理的基本流程
  14. 华为交换机关闭网口_华为交换机关闭端口号
  15. 【IIS】VS+IIS发布网站
  16. RFC(请求注解)--各种协议-标准
  17. 实现一个Android锁屏App的难点总结
  18. 格拉姆矩阵(Gram matrix)详细解读
  19. 你一定要知道的四个程序员接外包的网站,悄悄把技术变现!
  20. <<人工智能导论>>上机--遗传算法求解函数最值

热门文章

  1. issue回复常用英语
  2. 软硬链接 文件查找(find)
  3. 尘埃落定 -- 再见了兄弟们
  4. linux解压各种压缩包
  5. CGD全局并发队列和主队列的应用
  6. 工欲善其事,必先利其器:5大Java自动化部署工具
  7. max211/max213 max232 max3232
  8. 2020.12.18
  9. iOS开发——项目中的地图跳转(苹果地图,百度地图,高德地图)
  10. 事无巨细说Java之---Java 关键字