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

2024-05-13 18:29:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要在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.capital()方法首先降低整个字符串的大小写:

>>> 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中,有没有一种简单/单行的方法可以只将字符串的第一个字母大写,而不将字符串的其余部分小写?


Tags: and方法字符串stringsotitlemy单词
3条回答

怎么样:

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

输出为:

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

只需使用字符串切片:

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

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

如果你感兴趣的是每一个字符都上装第一个字符,其余字符都下装(不完全是OP要求的),这就更清楚了:

string.title()

相关问题 更多 >