非骆驼案例在蟒蛇3中的骆驼案例?

时间:2013-08-09 10:20:11

标签: python python-3.x case camelcasing

此程序旨在将某些内容从正常更改为camelCase。 EG:Not_Camel_case - > notCamelCase或Camel_Case to camelCase。

def titlecase(value):
    return "".join(word.title() for word in value.split("_"))

def titlecase2(value):
    return value[:1].lower() + titlecase(value)[1:]
def to_camel(value):
    return titlecase2(value)

这输出我想要的但是......这是为了比赛而且输入Not_An_SMS返回notAnSms而不是notAnSMS?同时输入num2words应该返回相同但是我的程序将其大写为num2Words。我该怎么做才能解决这些问题?

编辑: 我必须改变函数内的东西而不是输出,因为comp直接检查函数,特别是to_camel。

2 个答案:

答案 0 :(得分:0)

如果您希望Not_An_SMS返回notAnSms,则必须停止使用word.title()函数,而只是将每个单词的第一个字母大写/小写,但保留为其他人。

这仍然意味着SMS_status将返回sMSStatus,但我想这可以被视为例外。如果你想解决这个问题,你需要有一个单词词典,这样你就可以弄清楚某些东西是不是一个单词。而这当然不会影响竞争的范围。

答案 1 :(得分:0)

这个简化的作品是从Rails中偷来的:

acronyms={}
def camelize(identifier, upper_first=False):
    words = identifier.split('_')
    if upper_first:
        return ''.join(acronyms.get(w) or w.capitalize() for w in words)
    else:
        return (acronyms.get(words[0]) or words[0].lower()) + \
               ''.join(acronyms.get(w) or w.capitalize() for w in words[1:])

acronyms['SMS']='SMS'