循环中字符串的Python行为

时间:2009-06-20 19:05:09

标签: python string loops

在尝试在分隔符处大写字符串时,我遇到了我不理解的行为。有人可以解释为什么字符串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 个答案:

答案 0 :(得分:6)

capitalize将第一个字符变为大写,将字符串的其余部分变为小写。

在第一次迭代中,它看起来像这样:

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

在第二次迭代中,字符串分为:

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

因此,在两者上运行大写将把T改为三个小写。

答案 1 :(得分:5)

您可以使用title()

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

答案 2 :(得分:2)

str.capitalize将第一个字符大写,并将剩下的字符缩小。

答案 3 :(得分:2)

Capitalize()将返回字符串的副本,其中仅显示其第一个字符。你可以用这个:

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