python中strip()的陷阱

使用python的时候,发现了一个strip()命令的坑。

之前对strip(X)的理解是:去除开头和结尾包含的"X"字符串,如果不包含则不去除。

这里面的一个坑是:python对字符串X的处理是一个set,而不是一个固定顺序的字符串。也就是说,是把X拆开成由单个字母组成的set来看待的,如果被strip()的字符串在左右边包含任意一个该set中的字符,都会被strip()掉。示例如下:

>>> a="abc_1213"
>>> a.strip('abc_')
'1213'
>>> a.strip('ba_c')
'1213'
>>> a.strip('zxcvbnmasdfghjklpoiuytrewq')
'_1213'
>>> a.strip('zxcvbnmasdfg_hjklpoiuytrewq')
'1213'

最开始,个人的理解是第一种情况。strip(‘abc_‘)之后,只会去除左边的"abc_"。

实验之后,确认,是把要strip的字符串当做了一个set来处理的。只要是左右两边的字符在该set内,都会被逐一去除,直到遇到第一个不在该set内的字符为止。

时间: 2024-08-14 23:21:30

python中strip()的陷阱的相关文章

Python中strip方法的妙用

[开胃小菜] 当提到python中strip方法,想必凡接触过python的同行都知道它主要用来切除空格.有以下两种方法来实现. 方法一:用内置函数 #<python> if __name__ == '__main__': str = ' Hello world ' print '[%s]' %str.strip() #</python> 方法二:调用string模块中方法 #<python> import string if __name__ == '__main__

python中strip,lstrip,rstrip简介

一.起因 今天在做角色控制中,有一个地方用到rstrip,判断用户请求的url是否与数据库对应可用权限中url相符. if request.path == x.url or request.path.rstrip('/') == x.url: #精确匹配,判断request.path是否与permission表中的某一条相符 借此机会总结一下python中strip,lstrip和rstrip. 二.介绍 Python中strip用于去除字符串的首位字符,同理,lstrip用于去除左边的字符,r

Python中strip()函数

在python API中这样解释strip()函数: 声明:s为字符串,rm为要删除的字符序列 s.strip(rm)        删除s字符串中开头.结尾处,位于 rm删除序列的字符 s.lstrip(rm)       删除s字符串中开头处,位于 rm删除序列的字符 s.rstrip(rm)      删除s字符串中结尾处,位于 rm删除序列的字符 注意: 1. 当rm为空时,默认删除空白符(包括'\n', '\r',  '\t',  ' ') 例如: >>> a=' Hello

python中strip()方法学习笔记

Python strip() 方法用于移除字符串头尾指定的字符(默认为空格). 当使用strip('xxx'),只要字符串头尾有"xxx"中的一个,就会去掉,而不是符合字符串''xxx''才去掉 1 >>> string = 'aaabbbccc' 2 >>> string.strip('abc') 3 '' 4 >>> string2 = 'aaaffbbcc' 5 >>> string2.strip('abc'

python中strip()函数的理解

1.strip()函数 函数原型 声明:s为字符串,rm为要删除的字符序列 s.strip(rm) :删除s字符串中开头.结尾处,位于 rm删除序列的字符 s.lstrip(rm) :删除s字符串中开头处,位于 rm删除序列的字符 s.rstrip(rm) :删除s字符串中结尾处,位于 rm删除序列的字符 现在来分析s.strip(rm)这个函数. 现在假设s='abcd' 则 s.strip('bd')----->'abc' 而s.strip('ba')和s.strip('ab')的结果是一样

Python中列表的陷阱

作为python的初学者,在做决策树算法的程序时一个有关列表删除的问题困扰了一天.今天在博客里写出来,希望大家也可以避免如此的问题. 下面是代码纲要: def read_txt(filename):#定义了一个读txt文件的函数,这个函数的作用是将一个txt的表格转化成一个python列表. 它是一个嵌套的列表,下面随便粘几行: ['54', ' ?', ' 180211', ' Some-college', ' 10', ' Married-civ-spouse', ' ?', ' Husba

Python中strip()、lstrip()、rstrip()用法详解

Python中有三个去除头尾字符.空白符的函数,它们依次为: strip: 用来去除头尾字符.空白符(包括\n.\r.\t.' ',即:换行.回车.制表符.空格)lstrip:用来去除开头字符.空白符(包括\n.\r.\t.' ',即:换行.回车.制表符.空格)rstrip:用来去除结尾字符.空白符(包括\n.\r.\t.' ',即:换行.回车.制表符.空格) 注意:这些函数都只会删除头和尾的字符,中间的不会删除. 用法分别为:string.strip([chars])string.lstrip

python中strip、startswith、endswith

strip(rm)用来删除元素内的空白符: rm对应要删除空白符的元素,当rm为空(strip())时删除所有元素的空白符 startswith.endswith用来查找开头或结尾条件的元素 例子: 1 li = ["alec", " aric", "Alex", "Tony", "rain"] 2 tu = ("alec", " aric", "Alex&

python中字典的陷阱

把字典与列表组合,如 i=20 s=[]#定义一个空列表 b={'d':i}#定义一个字典 while i>0: i=i-1 b['d']=i#更新字典的值 s.append(b) print(s) 结果为 [{'d': 0}, {'d': 0}, {'d': 0}, {'d': 0}, {'d': 0}, {'d': 0}, {'d': 0}, {'d': 0}, {'d': 0}, {'d': 0}, {'d': 0}, {'d': 0}, {'d': 0}, {'d': 0}, {'d':