鱼C论坛

 找回密码
 立即注册
查看: 4031|回复: 8

有关字符串函数strip()的使用

[复制链接]
发表于 2017-6-24 00:03:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在做29讲课后作业第三题时,标准答案给的方法用了 .strip()函数,自己试了一下有一个问题
例如  a = ‘1:4’
a.strip(':')的返回值为什么不是‘14’ 实际返回的值仍然是‘1:4’呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-6-24 00:26:45 | 显示全部楼层
strip()是去除首尾的,你想要的是a.replace(':','')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-24 01:34:27 | 显示全部楼层
我看了一下题目,你确定需要的结果是14,而不是[1,4]?
达到后面那种效果可以写成这样
>>> a = '1:4'
>>> b = a.split(':')
>>> b
['1', '4']
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-6-24 20:38:29 | 显示全部楼层
shuofxz 发表于 2017-6-24 01:34
我看了一下题目,你确定需要的结果是14,而不是[1,4]?
达到后面那种效果可以写成这样

谢谢,我是想知道strip()函数的用法,看教程是说 strip([chars])会删除chars字符,但是自己在一楼的测试并没有达到效果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-24 20:44:46 | 显示全部楼层
其实遇到这种内置函数的问题,可以先看帮助文档的:
里面写的很清楚,把首尾相应的字符去除掉,中间的是不会删除的
str.strip([chars])
Return a copy of the string with the leading and trailing characters removed. The chars argument is a string specifying the set of characters to be removed. If omitted or None, the chars argument defaults to removing whitespace. The chars argument is not a prefix or suffix; rather, all combinations of its values are stripped:

>>> '   spacious   '.strip()
'spacious'
>>> 'www.example.com'.strip('cmowz.')
'example'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-6-24 21:11:58 | 显示全部楼层
shuofxz 发表于 2017-6-24 20:44
其实遇到这种内置函数的问题,可以先看帮助文档的:
里面写的很清楚,把首尾相应的字符去除掉,中间的是不 ...

谢谢。
找到一个比较具体的解释
使用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内的字符为止。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-24 21:28:12 | 显示全部楼层
yufuyoung 发表于 2017-6-24 21:11
谢谢。
找到一个比较具体的解释
使用Python的时候,发现了一个strip()命令的坑。

确实是这样的,之前看你问的是strip(':')的这种用法,就没说你写的这种情况。
其实在上面我贴出来的帮助文档中,红字的后面一句就是说的这个
The chars argument is a string specifying the set of characters to be removed.

然后,你在看帮助文档中最后的那个例子,也是正好举例了你说的这种情况
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-6-24 21:43:10 | 显示全部楼层
shuofxz 发表于 2017-6-24 21:28
确实是这样的,之前看你问的是strip(':')的这种用法,就没说你写的这种情况。
其实在上面我贴出来的帮助 ...

英语太渣
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-24 22:06:33 | 显示全部楼层

英语是程序员必须点的技能呀,以后得慢慢练习呀

其实看帮助文档里面的英文其实难度不是很高,比英语考试里面阅读理解简单多了。没有长难句,没有各种奇奇怪怪的语法,基本都是简单句,最多也就是有一些单词不知道意思,查一下就好了。其实这里面常用的也不是特别多,积累一阵子之后,再看这些英文文档就能好很多。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-2-21 04:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表