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')
''

答案是会的,只不过是从左或者从右开始。


     本文转自forsk 51CTO博客,原文链接:http://blog.51cto.com/forsk/2057870,如需转载请自行联系原作者






相关文章
Python中strip()、lstrip()和rstrip()方法的区别与用法详解
在Python中,字符串是一种常见的数据类型,而处理字符串时,经常会用到 strip()、lstrip() 和 rstrip() 这几个方法。它们都用于删除字符串开头和/或结尾的指定字符或字符集合,但在具体使用时有一些区别。
|
Python
Python:字符串基操_strip()/rstrip()/lstrip()_lower()/upper()_startswith()/endswith()_split()/rspilt()_join
Python:字符串基操_strip()/rstrip()/lstrip()_lower()/upper()_startswith()/endswith()_split()/rspilt()_join
364 0
|
存储 Linux Python
Python文件相关知识点strip、open、read、write、close、readline、readlines、encoding、encode、decode
文件的作用: 可以永久的保存数据. 文件在硬盘中存储的格式是二进制. 打开文件 读写文件 关闭文件 打开文件, 是文件从硬盘中存到内存中 open(file, mode=‘r’, encoding) file 要操作的文件名字, 类型是 str mode, 文件打开的方式, r(read) 只读打开, w(write) 只写打开 a(append) 追加打开 encoding 文件的编码格式, 常见的编码格式有两种, 一种是gbk, 一种是utf-8 返回值, 文件对象, 后续所有的文件操作,都需要通
520 1
Python文件相关知识点strip、open、read、write、close、readline、readlines、encoding、encode、decode
Python3中strip()、lstrip()、rstrip()用法详解
Python3中strip()、lstrip()、rstrip()用法详解
|
Python
Python strip 内置方法使用上的误区
最近在调查配置问题过程中,发现一个比较低级的错误,应该是 python 使用习惯的问题,和大家分享一下,比较有意思。 问题介绍 在系统的配置脚本中有一句这样的逻辑: # etcd_nodes like this: 'http://172.16.1.1:2380' etcd_nodes.append(etcd_node_host.rstrip(':2380').lstrip('http://')) 我们预期的结果当然是获取到 '172.16.1.1' 这个 IP 地址。
3868 0
|
Web App开发 Python
|
6月前
|
机器学习/深度学习 存储 设计模式
Python 高级编程与实战:深入理解性能优化与调试技巧
本文深入探讨了Python的性能优化与调试技巧,涵盖profiling、caching、Cython等优化工具,以及pdb、logging、assert等调试方法。通过实战项目,如优化斐波那契数列计算和调试Web应用,帮助读者掌握这些技术,提升编程效率。附有进一步学习资源,助力读者深入学习。
|
3月前
|
Python
Python编程基石:整型、浮点、字符串与布尔值完全解读
本文介绍了Python中的四种基本数据类型:整型(int)、浮点型(float)、字符串(str)和布尔型(bool)。整型表示无大小限制的整数,支持各类运算;浮点型遵循IEEE 754标准,需注意精度问题;字符串是不可变序列,支持多种操作与方法;布尔型仅有True和False两个值,可与其他类型转换。掌握这些类型及其转换规则是Python编程的基础。
211 33
|
2月前
|
数据采集 分布式计算 大数据
不会Python,还敢说搞大数据?一文带你入门大数据编程的“硬核”真相
不会Python,还敢说搞大数据?一文带你入门大数据编程的“硬核”真相
87 1

热门文章

最新文章

推荐镜像

更多