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())
我需要构建一个函数来仅从任何单词转换第一个字符,而且如果单词中的第一个字符不是以字符开头,则此函数还需要解决问题,例如“_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())