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

Jer*_*nes 13 python string

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

给出这样的字符串:

"i'm Brian, and so's my wife!" 
Run Code Online (Sandbox Code Playgroud)

在Perl中,我可以这样做:

ucfirst($string)
Run Code Online (Sandbox Code Playgroud)

这将产生我需要的结果:

I'm Brian, and so's my wife!
Run Code Online (Sandbox Code Playgroud)

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

$string =~ s/^([a-z])/uc $1/e;
Run Code Online (Sandbox Code Playgroud)

那也行得正常:

> 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!
>
Run Code Online (Sandbox Code Playgroud)

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

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

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

>>> s.title()
"I'M Brian, And So'S My Wife!" 
>>>
Run Code Online (Sandbox Code Playgroud)

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

ykt*_*too 18

怎么样:

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

输出是:

I'm Brian, and so's my wife!
Run Code Online (Sandbox Code Playgroud)


小智 18

这更清洁:

string.title()
Run Code Online (Sandbox Code Playgroud)

  • -1 Perl的`ucfirst`与`title`的工作方式非常不同:`ucfirst`仅作用于字符串的第一个字母,而Python的`title`将所有单词大写并将其他字母转换为小写字母.所以"我是Brian,所以是我的妻子!".title()`会导致"我是Brian,所以'我的妻子!'"这与Perl中ucfirst的结果完全不同:``我是布莱恩,所以是我的妻子!"` (5认同)

Dan*_*man 7

只需使用字符串切片:

s[0].upper() + s[1:]
Run Code Online (Sandbox Code Playgroud)

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