2017-07-07 10 views

答えて

5

ストリップは、部分文字列からどちらかの文字列の末尾にある文字を削除します。末尾または先頭の単語は削除されません。

この例ではうまくそれを示しています

x.strip('ab_ch') 
'de_fg' 

文字 "A"、 "B"、 "C"、 "H"、および "_" は、削除場合には先頭の「abc_cあるので"はすべて削除されます。他の文字は削除されません。

先頭または末尾のを削除する場合は、reまたはを使用することをおすすめします。

def rstrip_word(str, *words): 
    for word in words: 
     if str.endswith(word): 
      return str[:-len(word)] 
    return str 

def lstrip_word(str, *words): 
    for word in words: 
     if str.startswith(word): 
      return str[len(word):] 
    return str 

def strip_word(str, *words): 
    return rstrip_word(lstrip_word(str, *words), *words) 

このアルゴリズムがあることに注意してください:次のように

def rstrip_word(str, word): 
    if str.endswith(word): 
     return str[:-len(word)] 
    return str 

def lstrip_word(str, word): 
    if str.startswith(word): 
     return str[len(word):] 
    return str 

def strip_word(str, word): 
    return rstrip_word(lstrip_word(str, word), word) 

削除する複数の単語

A非常に単純な実装(貪欲1)文字列から複数の単語を削除するには、行うことができます欲望、それは最初の可能な例を見つけて返します:期待どおりに動作しない可能性があります。最大の長さのマッチを見つけること(それほどトリッキーではないが)はもう少し複雑である。

>>> strip_word(x, "abc", "adc_") 
'_cde_fgh' 
+2

私はストリップの意味を誤解しました。私は「単語」を取り除こうとしましたが、これは何のストリップでもありません。どうも。 –

+1

@DylanSu、私はその場合に一つの単語を削除する実装を含んでいました。 argリストを取ることで、必要に応じてこれを一般的なケースに拡張することができます。 –

0

ストリップ方式のドキュメントでは、「chars引数は、削除する文字セットを指定する文字列です。そのため、 "fgh"を除くすべての文字は削除されます(2つのアンダースコアを含む)。

0

strip()は文字を削除します。ではなく、部分文字列です。例:

x.strip('abcde_') 
'fgh' 
関連する問題