2009-06-20 3 views
1

Bei dem Versuch, eine Zeichenfolge an Separatoren groß zu schreiben, stieß ich auf Verhalten, das ich nicht verstehe. Kann jemand bitte erklären, warum die Saite während der Schleife umgekehrt wird? Vielen Dank.Python Verhalten der Zeichenfolge in Schleife

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 

Antwort

6

capitalize dreht das erste Zeichen in Großbuchstaben und den Rest der String in Kleinbuchstaben.

In der ersten Iteration, es sieht wie folgt aus:

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

So auf beiden werden dann die T drehen kapitalisieren läuft:

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

In der zweiten Iteration werden die Saiten des in getrennten in drei Kleinbuchstaben.

2

str.capitalize wandelt das erste Zeichen in Großbuchstaben und die restlichen Zeichen in Kleinbuchstaben um.

5

Sie könnten title() verwenden:

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

Capitalize() eine Kopie des Strings mit zurückkehren nur sein erstes Zeichen aktiviert. Sie könnten dies verwenden:

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