10

今日、pythonターミナルで、試しました

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

しかし、取得する代わりに、取得"postmaster"しました"postmast"

何が原因でしょうか? どうすれば"postmaster"出力として取得できますか?

4

5 に答える 5

20

あなたは何を誤解して.strip() ます。渡した文字列に含まれる文字をすべて削除します。str.strip()ドキュメントから:

chars引数は、削除する文字セットを指定する文字列です

私を強調します。そこにある言葉setは決定的です。

はセットとしてchars扱われるため、入力文字列の先頭と末尾からすべての、、、、、、、、、.strip()および文字が削除sされます。そのため、入力文字列の末尾の文字と文字も削除されました。それらのキャラクターはセットの一部です。ervicChk_er

先頭または末尾から文字列を削除するには、代わりにスライスを使用します。

if a.startswith('serviceCheck_'):
    a = a[len('serviceCheck_'):]
于 2013-02-01T12:36:50.210 に答える
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

次のようなもので「ポストマスター」を分離することもできます。

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