Python поведение строки в цикле - PullRequest
1 голос
/ 20 июня 2009

При попытке использовать заглавные буквы в разделителях я столкнулся с поведением, которое я не понимаю. Может кто-нибудь объяснить, почему во время цикла строка s обращена вспять? Спасибо.

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

Ответы [ 4 ]

6 голосов
/ 20 июня 2009

capitalize превращает первый символ в верхний регистр, а остальную часть строки в нижний регистр.

На первой итерации это выглядит так:

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

Во второй итерации строки разделяются на:

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

Таким образом, использование заглавных букв в обоих случаях превратит букву T в три.

5 голосов
/ 20 июня 2009

Вы можете использовать title():

>>> s = 'these-three_words'
>>> print s.title()
These-Three_Words
2 голосов
/ 20 июня 2009

Capitalize () вернет копию строки с только его первым символом с заглавной буквы. Вы можете использовать это:

def cap(s):
    return s[0].upper() + s[1:]
2 голосов
/ 20 июня 2009

str.capitalize заглавные буквы первого символа и нижние регистры остальных символов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...