什么是Perl的ucfirst()或s /// e的Python等价物?

时间:2016-05-12 08:18:46

标签: python string

我需要在Python中大写字符串,而不是将字符串的其余部分转换为小写字母。这似乎微不足道,但我似乎无法在Python中找到一种简单的方法。

给出这样的字符串:

"i'm Brian, and so's my wife!" 

在Perl中,我可以这样做:

ucfirst($string)

会产生我需要的结果:

I'm Brian, and so's my wife!

或者使用Perl的正则表达式修饰符,我也可以这样做:

$string =~ s/^([a-z])/uc $1/e;

这也可行:

> perl -l
$s = "i'm Brian, and so's my wife!";
$s =~ s/^([a-z])/uc $1/e;
print $s;
[Control d to exit]
I'm Brian, and so's my wife!
>

但在Python中,str.capitalize()方法首先降低整个字符串的大小写:

>>> s = "i'm Brian, and so's my wife!"
>>> s.capitalize()
"I'm brian, and so's my wife!"
>>>

虽然title()方法高举每个单词,而不仅仅是第一个单词:

>>> s.title()
"I'M Brian, And So'S My Wife!" 
>>>

在Python中是否有任何简单/单行的方式只使用字符串的第一个字母而不用低于字符串的其余部分?

3 个答案:

答案 0 :(得分:14)

这更清洁:

string.title()

答案 1 :(得分:13)

怎么样:

s = "i'm Brian, and so's my wife!"
print s[0].upper() + s[1:]

输出结果为:

I'm Brian, and so's my wife!

答案 2 :(得分:7)

只需使用字符串切片:

s[0].upper() + s[1:]

请注意,字符串是不可变的;这就像capitalize()一样,返回一个新字符串。