python 函数仅首字母大写

python function capitalize first letter only

我需要构建一个函数来仅从任何单词转换第一个字符,而且如果单词中的第一个字符不是以字符开头,则此函数还需要解决问题,例如“_sun”,'- tree', '2cat' 这些词需要像 _Sun, -Tree, 2Cat。这是我目前所拥有的,它可以转换任何单词,但我不知道第二部分怎么做,需要使用 ASCII 吗??获取第一个字符的值并查看单词是否以字符开头?

def convert(capital):
    return capital[0].upper() + capital[1:]

def main():
   print(convert('sun'))

main()

一种选择是使用正则表达式并将其限制为 1 个替换,例如:

>>> import re
>>> re.sub('[a-zA-Z]', lambda m: m.group().upper(), '2cat', 1)
'2Cat'
>>> re.sub('[a-zA-Z]', lambda m: m.group().upper(), 'sun', 1)
'Sun'

无论如何,您的函数都会将第一个字符大写。

对于此任务,您必须以不同的方式找到第一个字符;你可以使用 str.isalpha() function:

def convert(capital):
    index = 0
    while index < len(capital) and not capital[index].isalpha():
        index += 1
    return capital[:index] + capital[index:].capitalize()

另一种方法是使用 regular expression-based substitution;您必须使用函数将找到的字符大写:

import re

def convert(capital):
    return re.sub(r'([a-z])(.*)$', lambda m: m.group(1).upper() + m.group(2),
                  capital, flags=re.I)

这会不区分大小写地匹配第一个字母,并将其替换为大写版本。

第三个想法是使用 str.title(),它对文本中的 所有 个单词执行相同的操作,但仅将其应用于第一个单词:

def convert(capital):
    first, _, rest = capital.partition(' ')
    return '{} {}'.format(first.title(), rest)

您似乎只有一个以字母开头的单词或第二个字符是字母的单词,所以您只有两种可能性:

print(s.capitalize() if s[0].isalpha() else s[0] +  s[1:].capitalize())