1

该程序旨在将某些内容从正常更改为驼峰式。EG:Not_Camel_case -> notCamelCase 或 Camel_Case 到 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。

4

2 回答 2

0

如果要Not_An_SMSreturn notAnSms,则必须停止使用该word.title()函数,而只需大写/小写每个单词的第一个字母,但保留其他单词的大小写。

这仍然意味着SMS_status它将返回sMSStatus,但我想这可以被视为一个例外。如果你想解决这个问题,你需要有一个单词词典,这样你就可以确定某事是否是一个单词。这当然不在竞争范围内。

于 2013-08-09T10:42:19.783 回答
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'
于 2013-08-09T11:41:20.167 回答