2009-06-20 3 views
1

文字列を区切り文字で大文字にする際に、私は動作に遭遇しましたが、わかりません。ループ中に文字列sが元に戻った理由を誰かが説明できますか?ありがとう。ループ内の文字列のPythonの動作

s = 'these-three_words' 
seperators = ('-','_') 
for sep in seperators: 
    s = sep.join([i.capitalize() for i in s.split(sep)]) 
    print s 
print s 

stdout: 
These-Three_words 
These-three_Words 
These-three_Words 

答えて

6

capitalize最初の文字を大文字に、残りの文字列を小文字にします。最初の反復で

が、それは次のようになります。

>>> [i for i in s.split('_')] 
['These-Three', 'words'] 

それではなります両方を活用実行されているT:2回目の反復で

>>> [i.capitalize() for i in s.split('-')] 
['These', 'Three_words'] 

、文字列が分けされています3つの小文字。

2

str.capitalizeは、最初の文字を大文字にし、残りの文字を小文字にします。

5

あなたはtitle()を使用することができます。

>>> s = 'these-three_words' 
>>> print s.title() 
These-Three_Words 
2

は大文字()は大文字のみ、その最初の文字と文字列のコピーを返します。あなたはこれを使うことができます:

 
def cap(s): 
    return s[0].upper() + s[1:]