10

今天在python终端,我试过了

a = "serviceCheck_postmaster"
a.strip("serviceCheck_")

但我没有得到"postmaster",而是得到了"postmast"

什么可能导致这种情况?我怎样才能得到"postmaster"输出?

4

5 回答 5

20

你误解了.strip() 什么。它会删除您传递的字符串中的任何字符。str.strip()文档中:

chars参数是一个字符串,指定要删除的字符集

强调我的;那里的词set很关键。

因为chars被视为一个集合,所以将从输入字符串的开头和结尾.strip()删除所有s, e, r, v, i, c, C, h,k和字符。_因此,输入字符串末尾e的andr字符也被删除了;这些字符是集合的一部分。

要从开头或结尾删除字符串,请改用切片:

if a.startswith('serviceCheck_'):
    a = a[len('serviceCheck_'):]
于 2013-02-01T12:36:50.210 回答
6

Martijn 回答的替代方案将使用str.replace()

>>> a = "serviceCheck_postmaster"
>>> a.replace('serviceCheck_','')
'postmaster'
于 2013-02-01T12:41:01.140 回答
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]
于 2013-02-01T13:39:18.463 回答
1

您还可以使用以下内容隔离“postmaster”:

a = "serviceCheck_postmaster"
b = a.split("_")[1]             # split on underscore and take second item
于 2013-02-01T12:49:39.350 回答
1

Strip 将带走您输入到其函数中的所有字母。因此,字母“e”和“r”被剥夺邮政局长的原因。试试:a = “serviceCheck_postmaster” print(a[13:])

于 2018-03-02T22:55:36.073 回答