Python strip 方法
今天在Python终端,我尝试了这个
a = "serviceCheck_postmaster"
a.strip("serviceCheck_")
但是我得到的不是"postmaster"
,而是"postmast"
。
这可能是什么原因呢?我该怎么才能得到"postmaster"
的输出呢?
5 个回答
4
如果你仔细看看strip函数的帮助文档,它是这么说的:
Help on built-in function strip:
strip(...)
S.strip([chars]) -> string or unicode
Return a copy of the string S with leading and trailing
whitespace removed.
If chars is given and not None, remove characters in chars instead.
If chars is unicode, S will be converted to unicode before stripping
这个函数会去掉字符串开头和结尾的所有字符和空格。在你的例子中,字符集是:
s, e, r, v, i, c, C, h, k and _
你可以通过类似下面的方式获取邮政管理员:
a = "serviceCheck_postmaster"
print a.split("_")[1]
6
Martijn的回答还有一个替代方案,就是使用 str.replace()
这个方法。
>>> a = "serviceCheck_postmaster"
>>> a.replace('serviceCheck_','')
'postmaster'
20
你误解了 .strip()
的作用。它会去掉你传入的字符串中出现的 任何 字符。根据 str.strip()
的文档:
chars 参数是一个字符串,用来指定要去掉的 字符集合。
我强调一下,这里的 set
这个词很重要。
因为 chars
被当作一个集合来处理,所以 .strip()
会去掉你输入字符串开头和结尾的所有 s
、e
、r
、v
、i
、c
、C
、h
、k
和 _
字符。所以你输入字符串 结尾 的 e
和 r
字符也被去掉了;这些字符都是这个集合的一部分。
如果你想从开头或结尾去掉一个字符串,可以用切片来实现:
if a.startswith('serviceCheck_'):
a = a[len('serviceCheck_'):]