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