Python中的strip()的理解
在看到Python中strip的时候产生了疑问
strip() 用于移除字符串头尾指定的字符(默认为空格)
开始测试:
>>> s = 'ncy_123.python'
>>> s.strip('123')
'ncy_123.python'
疑问:明明指定要删除123,但是为什么返回值根本没有变,继续测试
>>> s.strip('andyandc_3g1t2m')
'.pytho'
>>> s.strip('_3g1t2m')
'ncy_123.python'
两个测试返货结果不一样
这时候发现,字符串s在使用strip()的时候,只有在第一个字符被删掉之后,再去匹配后边的字符。
原理应该是这样:s.strip('andyandc_3g1t2m') 根据strip中的字符开始匹配字符串s,第一个为n,开始查找strip,有n,此时 s = 'cy_123.python',继续匹配strip如果有c则删掉c。此时如果没有找到c,那么直接返回字符串s = 'cy_123.python'。
对理论进行测试:
>>> s.strip('anyb_3g1t2m')
'cy_123.pytho'
测试成功
结论就是在字符串前面(或者后边)的字符未被删除之前,就算该字符后边与strip匹配也不进行删除,并且strip()中的字符是无序的只要能匹配就可以删掉,不论前后。
所以
>>> s.strip('anyb_3g1t2m')
'cy_123.pytho'
>>> s.strip('_3g2t2manyb')
'cy_123.pytho'
返回结果是一样的。
那么对s.lstrip()和s.rstrip()就好理解了
s.lstrip()是从左边第一位开始进行匹配,有则删除,如果第一位未删除,即使后边匹配,仍然无效。
eg.
>>> s.lstrip('ycaglkjhg_123')
'ncy_123.python'
>>> s.rstrip('aothpy.321')
'ncy_123.python'
不管从左还是右,只要前边的字符未匹配删除成功,后边保持原样。
到这时,仍然有个疑问,字符串的左右是从字符串的0位置和-1位置,那如果正好全部匹配,会不会删掉整个字符串。
eg.
>>> s.lstrip('anbc.y_3t2h1op')
''
答案是会的,只不过是从左或者从右开始。
Python中的strip()的理解的更多相关文章
- python中对多态的理解
目录 python中对多态的理解 一.多态 二.多态性 三.鸭子类型 python中对多态的理解 一.多态 多态是指一类事物有多种形态,比如动物类,可以有猫,狗,猪等等.(一个抽象类有多个子类,因而多 ...
- Python中“if __name__=='__main__':”理解与总结
1 引言 在Python当中,如果代码写得规范一些,通常会写上一句“if __name__==’__main__:”作为程序的入口,但似乎没有这么一句代码,程序也能正常运行.这句代码多余吗?原理又在哪 ...
- 对于Python中回调函数的理解
关于回调函数,网上有很多说明和各种解释,多数在尝试用语言描述.我认为,如果对各个角色之间的关系不清楚,如果没有相关的编程需求,那么语言便非常无力,很难理解. 这是360百科的解释: 在计算机程序设计中 ...
- 对python中的__name__的理解
一开始学习python的时候,不理解python中的__name__的用途,一致感觉__name__的返回结果就是__main__ 今天系统的看了一下,才理解过来,__name__真正的用处是用在使用 ...
- python中的strip()方法
python中字符串str的strip()方法 str.strip()就是把字符串(str)的头和尾的空格,以及位于头尾的\n \t之类给删掉. 例1: str=" python " ...
- 对python中元类的理解
1. 类也是对象 在大多数编程语言中,类就是一组用来描述如何生成一个对象的代码段.在Python中这一点仍然成立: >>> class ObjectCreator(object): ...
- python 中is和== 的理解
Python中的对象包含三要素:id.type.value其中id用来唯一标识一个对象,type标识对象的类型,value是对象的值is判断的是a对象是否就是b对象,是通过id来判断的==判断的是a对 ...
- 对 Python 中 GIL 的一点理解
GIL(Global Interpreter Lock),全局解释器锁,是 CPython 为了避免在多线程环境下造成 Python 解释器内部数据的不一致而引入的一把锁,让 Python 中的多个线 ...
- Python中if __name__ == '__main__':理解
在很多python脚本中在最后的部分会执行一个判断语句if __name__ == "__main__:",之后还可能会有一些执行语句.那添加这个判断的目的何在? 在python编 ...
随机推荐
- 仿LOL项目开发第四天
---恢复内容开始--- 仿LOL项目开发第四天 by草帽 上节讲了几乎所有的更新版本的逻辑,那么这节课我们来补充界面框架的搭建的讲解. 我们知道游戏中的每个界面都有自己的一个类型:比如登陆界面,创建 ...
- Andorid之Annotation框架初使用(三)
线程使用: @Background这个是使用了cached thread pool executor , 阻止开启过多的线程 可以为@Background指定一个id,用于随时终止线程的操作(Back ...
- OpenCV Harris 角点检测子
Harris 角点检测子 目标 本教程中我们将涉及: 有哪些特征?它们有什么用? 使用函数 cornerHarris 通过 Harris-Stephens方法检测角点. 理论 有哪些特征? 在计算机视 ...
- TYVJ 2002 扑克牌 题解
P2002 扑克牌 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 Admin生日那天,Rainbow来找Admin玩扑克牌……玩着玩着Rainbow觉得太没 ...
- datagridview 单元格类型转换【备忘】
datagridview 在设定列类型后,其下面所有行的该列都与设定的列类型相同. 在需要改变某一行的某个单元格时,遇到了一些问题,再次进行备忘: 之前在遇到该问题时参考别人的博客解决过,但是时间久 ...
- go语言基础之回调函数
1.回调函数 示例: 实现:加,减,乘 示例: package main import "fmt" type FuncType func(int, int) int //实现加法 ...
- unexpected token: * 和 java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to 解决办法
一.unexpected token: * 的解决办法 首先要搞清楚sql与hql的区别! sql操作的是数据库表,而hql操作的是对象! sql中“select * from table”,而hq ...
- [OpenGL红宝书]第一章 OpenGL概述
第一章 OpenGL概述 标签(空格分隔): OpenGL 第一章 OpenGL概述 1 什么是OpenGL 2 初识OpenGL程序 3 OpenGL语法 4 OpenGL渲染管线 41 准备向Op ...
- 循环栅栏:CyclicBarrier(司令要求任务) 读书笔记
可以理解为循环栅栏,栅栏就是一种障碍物.假如我们将计数器设置为10,那么凑齐第一批10个线程后,计数器就会归零,然后接着凑齐下一批10个线程,这就是循环栅栏的含义. 构造器: public Cycli ...
- java使用链栈实现数制转换
java实现链栈在前面有所介绍:http://www.cnblogs.com/lixiaolun/p/4644141.html 将前面java实现链栈的代码稍作修改: package linkedst ...