Answers:
如果第一个字符是整数,则不会大写第一个字母。
>>> '2s'.capitalize()
'2s'
如果需要此功能,请去除数字,然后使用'2'.isdigit()
来检查每个字符。
>>> s = '123sa'
>>> for i, c in enumerate(s):
... if not c.isdigit():
... break
...
>>> s[:i] + s[i:].capitalize()
'123Sa'
next((i for i,e in enumerate(test) if not e.isdigit()), '0')
可以解决空字符串的情况
. capitalize
还将其他字符降低。来自官方文档:“返回S的带标题大小写的版本,即单词以标题大小写字符开头,所有其余的大小写字符均小写。 ”
这与@Anon的答案类似,因为它使字符串的其余大小写保持不变,而无需re模块。
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指出我没有回答问题!-固定
len(x) == 0
分支。
return x[0].upper() + x[1:] if len(x) > 0 else x
capitalize
&title
首先将整个字符串小写,然后仅将第一个字母大写。
a[:1].upper() + a[1:]
,这将解决len(X)==0
特殊情况。
单线: ' '.join(sub[:1].upper() + sub[1:] for sub in text.split(' '))