gpt4 book ai didi

python - capitalize 函数的较短代码

转载 作者:行者123 更新时间:2023-11-28 20:03:17 26 4
gpt4 key购买 nike

我在这里解决了这个问题https://www.hackerrank.com/challenges/capitalize

描述:给你一个字符串。您的任务是将其中的每个单词大写。总之,只有第一个字符大写。示例 12abc 大写时仍然是 12abc - 因为这个“title”不能与像“1 w 2 r 3g”这样的字符串一起正常工作。我需要检查数字和小写字母的组合。这是我的代码:

def capitalize(string):
result = list (string.title())
for index in range (len (string)-1):
if string[index].isdigit () and string[index+1].islower ():
result[index+1] = result[index+1].lower()
result = ''.join([char for char in result])
return (result)

但是这段代码太繁琐了。有人可以帮助做出更优雅的 pythonic 决定吗?谢谢!

最佳答案

re 模块可以提供帮助:

titlesub = re.compile(r'\b[a-zA-Z]').sub  # Precompile regex and prebind method for efficiency  
def capitalize(string):
return titlesub(lambda x: x.group(0).upper(), string)

注意:\b 处理单词/非单词字符边界(单词字符是字母数字和下划线),因此它会阻止 12abca,但它不会为 "abc(变成 "Abc)这样做。

虽然 \b 很方便,但它确实意味着像 "won't" 这样的字符串将被大写为 "Won'T"。如果这是一个问题,当前面没有非空格字符时,可以使用更有针对性的选择器来大写:

titlesub = re.compile(r'(?<!\S)[a-zA-Z]').sub

关于python - capitalize 函数的较短代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42453979/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com