今日、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
r
先頭または末尾から文字列を削除するには、代わりにスライスを使用します。
if a.startswith('serviceCheck_'):
a = a[len('serviceCheck_'):]
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]
次のようなもので「ポストマスター」を分離することもできます。
a = "serviceCheck_postmaster"
b = a.split("_")[1] # split on underscore and take second item