详解Python str.capitalize()和str.title()的区别

  • Post category:Python

当我们需要对字符串的首字母进行大小写转换时,Python提供了两个函数:str.capitalize()str.title()。尽管这两个函数都可以将字符串的首字母转换为大写,但它们的实现方式有一些不同。

str.capitalize()

str.capitalize()函数可以将字符串的第一个字符变成大写,其他字符则不变。如果字符串的第一个字符正好是大写字母,则该函数不会对字符串做任何修改。示例如下:

>>> s = "hello, world!"
>>> s.capitalize()
'Hello, world!'
>>> s = "Hello, world!"
>>> s.capitalize()
'Hello, world!'

在上面的示例中,第一个s.capitalize()s的首字母从小写变成了大写,而第二个s.capitalize()并没有改变s的内容,因为s的首字母已经是大写了。

str.title()

str.title()函数会将字符串中每个单词的首字母都变成大写,而其他字母则变成小写。下面是一个示例:

>>> s = "the quick brown fox"
>>> s.title()
'The Quick Brown Fox'

在上述示例中,字符串s中每个单词的首字母都被转换成了大写字母,而其他字母则被转换成了小写字母。需要注意的是,字符串中的每个空格都会被用来分隔单词,而不是像之前的s.capitalize()只对第一个单词进行转换。

此外,值得注意的是,str.title()函数也会将字符串的首字母变成大写。所以,如果字符串的第一个字符本来就是大写字母,则它仍然会保持不变。如果要忽略字符串的第一个字符,可以事先调用s[1:].title(),也就是从字符串的第二个字符开始计算。

下面是另一个示例:

>>> s = "HELLO, WORLD!"
>>> s[1:].title()
'Hello, World!'

在上述示例中,字符串s中的每个单词的首字母都被转换成了大写字母,而其他字母都变成了小写字母(注意,第一个单词的首字母被忽略了,因为我们从第二个字符开始了)。

综上所述,str.capitalize()str.title()函数在转换字符串的首字母上有着不同的作用。前者只转换第一个字符,而后者可以转换每个单词的首字母。