Python strip 方法

10 投票
5 回答
27026 浏览
提问于 2025-04-17 14:25

今天在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() 会去掉你输入字符串开头和结尾的所有 servicChk_ 字符。所以你输入字符串 结尾er 字符也被去掉了;这些字符都是这个集合的一部分。

如果你想从开头或结尾去掉一个字符串,可以用切片来实现:

if a.startswith('serviceCheck_'):
    a = a[len('serviceCheck_'):]

撰写回答