今天在python终端,我试过了
a = "serviceCheck_postmaster"
a.strip("serviceCheck_")
但我没有得到"postmaster"
,而是得到了"postmast"
。
什么可能导致这种情况?我怎样才能得到"postmaster"
输出?
今天在python终端,我试过了
a = "serviceCheck_postmaster"
a.strip("serviceCheck_")
但我没有得到"postmaster"
,而是得到了"postmast"
。
什么可能导致这种情况?我怎样才能得到"postmaster"
输出?
你误解了.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_'):]
Martijn 回答的替代方案将使用str.replace()
>>> a = "serviceCheck_postmaster"
>>> a.replace('serviceCheck_','')
'postmaster'
如果你仔细看一下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]
您还可以使用以下内容隔离“postmaster”:
a = "serviceCheck_postmaster"
b = a.split("_")[1] # split on underscore and take second item
Strip 将带走您输入到其函数中的所有字母。因此,字母“e”和“r”被剥夺邮政局长的原因。试试:a = “serviceCheck_postmaster” print(a[13:])