今天在python终端,我试过
a = "serviceCheck_postmaster"
a.strip("serviceCheck_")
但我没有获得"postmaster"
,而是"postmast"
。
是什么导致这个?我怎样才能将"postmaster"
作为输出?
答案 0 :(得分:19)
您误解了.strip()
所做的事情。它会删除您传递的字符串中找到的任何字符。来自str.strip()
documentation:
强调我的;chars 参数是一个字符串,用于指定要删除的字符的 set 。
set
这个词至关重要。
由于chars
被视为一个集合,.strip()
将删除所有s
,e
,r
,v
,{{1输入字符串开头和结尾的字符,i
,c
,C
,h
和k
字符。因此,您的输入字符串的 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:])