Python条带方法

时间:2013-02-01 12:35:04

标签: python

今天在python终端,我试过

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

但我没有获得"postmaster",而是"postmast"

是什么导致这个?我怎样才能将"postmaster"作为输出?

5 个答案:

答案 0 :(得分:19)

您误解了.strip() 所做的事情。它会删除您传递的字符串中找到的任何字符。来自str.strip() documentation

  

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

强调我的; set这个词至关重要。

由于chars被视为一个集合,.strip()将删除所有serv,{{1输入字符串开头和结尾的字符,icChk字符。因此,您的输入字符串的 end 中的_e字符也被删除了;这些角色是集合的一部分。

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

r

答案 1 :(得分:6)

Martijn回答的另一种方法是使用str.replace()

>>> a = "serviceCheck_postmaster"
>>> a.replace('serviceCheck_','')
'postmaster'

答案 2 :(得分:3)

如果仔细查看条带功能的帮助 它像这样说:

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 _

你可以通过类似的东西获得postmaster

a = "serviceCheck_postmaster"
print a.split("_")[1]

答案 3 :(得分:1)

你也可以用这样的东西隔离“postmaster”:

a = "serviceCheck_postmaster"
b = a.split("_")[1]             # split on underscore and take second item

答案 4 :(得分:1)

Strip会删除您输入其函数的所有字母。因此,为什么字母'e'和'r'被剥夺了postmaster。 尝试: a =“serviceCheck_postmaster” 打印(A [13:])