python仅首字母大写

2021-01-26 07:15:34 发布

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

我知道。capital()将字符串的第一个字母大写,但如果第一个字符是整数怎么办?

这个

1bob
5sandy

为了这个

1Bob
5Sandy
3条回答
网友
1楼 ·

如果第一个字符是整数,它将不会大写第一个字母。

>>> '2s'.capitalize()
'2s'

如果你想要这个功能,去掉数字,你可以使用'2'.isdigit()来检查每个字符。

>>> s = '123sa'
>>> for i, c in enumerate(s):
...     if not c.isdigit():
...         break
... 
>>> s[:i] + s[i:].capitalize()
'123Sa'
网友
2楼 ·

只是因为没人提起:

>>> 'bob'.title()
'Bob'
>>> 'sandy'.title()
'Sandy'
>>> '1bob'.title()
'1Bob'
>>> '1sandy'.title()
'1Sandy'

然而,这也会给

>>> '1bob sandy'.title()
'1Bob Sandy'
>>> '1JoeBob'.title()
'1Joebob'

也就是说,它不仅仅是首字母大写。但是.capitalize()也有同样的问题,至少在'joe Bob'.capitalize() == 'Joe bob'中是这样,所以meh。

网友
3楼 ·

这与@Anon的答案类似,因为它保持字符串的其余大小写完好无损,而不需要重新模块。

def sliceindex(x):
    i = 0
    for c in x:
        if c.isalpha():
            i = i + 1
            return i
        i = i + 1

def upperfirst(x):
    i = sliceindex(x)
    return x[:i].upper() + x[i:]

x = '0thisIsCamelCase'

y = upperfirst(x)

print(y)
# 0ThisIsCamelCase

正如@Xan所指出的,该函数可以使用更多的错误检查(例如检查x是否是一个序列-但是我省略了边的情况来说明该技术)

根据@normanius评论更新(谢谢!)

感谢@GeoStoneMarten指出我没有回答这个问题!-修正了

相关问题