Python rstrip函数踩坑记录
问题背景
从许多中文的参考文献上,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
指的是用户传入的字符串,如上面的d
、ld
、ad
,而第二个the string
指的是需要处理的string,这样理解之后,rstrip的功能就彻底明确了,其功能准确的描述就是:删除字符串末尾指定的字符中任意字符,如果为空,则删除字符串末尾的空格
提到了rstrip,就不得不提起lstrip,lstrip和rstrip功能类似,唯一的区别就是rstrip去掉的是字符串末尾的指定字符,而lstrip去掉的是字符开头的指定字符。
总结一下
rstrip和lstrip方法删除的不是传入的整个字符,而是以单个字符为单位删除,如果你传入了一段字符串,如果这段字符串中任何一个字符出现在需删除字符串的开头或末尾,则都将会被删除。如:
>>> s = 'helloworlld'
>>> s.rstrip('ld')
'hellowor'
Python rstrip函数踩坑记录相关推荐
- Python Sphinx使用踩坑记录
描述 使用 pip 安装sphinx后,按照教程建立了一个新的py文件,如下 # run.py def run(name):"""this is how we run:p ...
- Python打包工具Pyintealler打包py文件为windows exe文件过程及踩坑记录+实战例子
Python打包工具Pyintealler打包py文件为windows exe文件过程及踩坑记录+实战例子 目录 Python打包工具Pyintealler打包py文件为windows exe文件过程 ...
- 使用Java读取 “Python写入redis” 的数据踩坑记录
https://my.oschina.net/u/2338224/blog/3061507 使用Java读取 "Python写入redis" 的数据踩坑记录 https://seg ...
- mysql 使用sum limit_mysql踩坑记录之limit和sum函数混合使用问题
问题复盘 本次复盘会用一个很简单的订单表作为示例. 数据准备 订单表建表语句如下(这里偷懒了,使用了自增ID,实际开发中不建议使用自增ID作为订单ID) CREATE TABLE `order` ( ...
- 如何运行开源游戏?八分音符酱python版踩坑记录
如何运行开源游戏?八分音符酱python版踩坑记录 如何从零到一搭建一个python游戏?这篇博客将以八分音符酱介绍详细过程. 下载源代码源代码 搭建python环境 参考此网站 此游戏运行基于pyt ...
- VS Code Python 代码智能提示(自动补全)编译环境设置踩坑记录
VS Code Python 编译环境设置踩坑记录 本菜鸡非常喜欢VS code的简洁风格,而且跟原来再用的VS2017相比简直不要太快,前段时间电脑重装之后又要在windows系统上重新搭建整套环境 ...
- TVM: Deep Learning模型的优化编译器(强烈推荐, 附踩坑记录)
本文作者是阿莱克西斯,原载于知乎,雷锋网(公众号:雷锋网)获得授权转载. (前排提醒,本文的人文内容部分稍稍带有艺术加工,请保持一定的幽默感进行阅读) 关注我最近想法的同学应该知道我最近都在把玩 TV ...
- Detectron2 win10踩坑记录
Detectron2 win10踩坑记录 安装CUDA clone到本地 修改cocoeval.cpp第483行(不同版本行数不一样) 创建虚拟环境 安装pycocotools 安装VS2019或者生 ...
- 日常踩坑记录-汇总版
开发踩坑记录,不定时更新 心得 RTFM 严谨的去思考问题,处理问题 严格要求自己的代码编写习惯与风格 注意 单词拼写 20200207 mybatis plus 自带insert插入异常 sql i ...
最新文章
- PWA即将推向所有Chrome平台
- PHP文件上传主要代码讲解
- java搜索文件_Java如何在目录中搜索文件?
- Taro+react开发(76):taro安装
- python3 生成器
- 十分钟搞定pandas+实战
- 2015年6月24日日报
- 若依编辑和删除操作按钮不可用怎么办?
- 2.NET Core设定数据库种子
- windows sesrver2003下搭建DHCP服务器
- Abaqus运行fortan报错:“Error in job Job-1: Problem during compilation - D:\test.for”
- Android ImageView实现反色显示的方法
- 企业风险管理的基本流程
- 华为交换机关闭网口_华为交换机关闭端口号
- 【IIS】VS+IIS发布网站
- RFC(请求注解)--各种协议-标准
- 实现一个Android锁屏App的难点总结
- 格拉姆矩阵(Gram matrix)详细解读
- 你一定要知道的四个程序员接外包的网站,悄悄把技术变现!
- <<人工智能导论>>上机--遗传算法求解函数最值